summaryrefslogtreecommitdiffstats
path: root/testing/runtests.py
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2020-06-13 13:05:45 (GMT)
committerGitHub <noreply@github.com>2020-06-13 13:05:45 (GMT)
commit22d8ffd11ad8b864941ba73f2161622d693f4f49 (patch)
tree024c11d992b87d6abd4ecc3ca07e29d43321b916 /testing/runtests.py
parent2aef0e0e4f91038b0b1d952efad0a3aba7d6a6cd (diff)
downloadDoxygen-22d8ffd11ad8b864941ba73f2161622d693f4f49.zip
Doxygen-22d8ffd11ad8b864941ba73f2161622d693f4f49.tar.gz
Doxygen-22d8ffd11ad8b864941ba73f2161622d693f4f49.tar.bz2
Running doxygen tests with variable with spaces (#7819)
When having a run command like: ``` nmake tests TEST_FLAGS="--xhtml --keep --cfg GENERATE_HTMLHELP=YES --cfg HHC_LOCATION=\"c:\Program Files (x86)\HTML Help Workshop\hhc.exe\" --cfg HTML_FILE_EXTENSION=.html --cfg SEARCHENGINE=NO --id=1" ``` we get an error like ``` Not a doxygen configuration item, missing '=' sign: 'Files'. ``` this is due to the usage of the `split()` that does a brute force split on spaces. Making the splitting a bit more intelligent: - splitting on `--` - splitting on space after "command"
Diffstat (limited to 'testing/runtests.py')
-rwxr-xr-xtesting/runtests.py29
1 files changed, 25 insertions, 4 deletions
diff --git a/testing/runtests.py b/testing/runtests.py
index 52fab66..5d5cee1 100755
--- a/testing/runtests.py
+++ b/testing/runtests.py
@@ -150,11 +150,11 @@ class Tester:
if (self.args.clang):
print('CLANG_ASSISTED_PARSING=YES', file=f)
if (self.args.cfgs):
- for cfg in list(itertools.chain.from_iterable(self.args.cfgs)):
- if cfg.find('=') == -1:
+ for cfg in self.args.cfgs:
+ if cfg[0].find('=') == -1:
print("Not a doxygen configuration item, missing '=' sign: '%s'."%cfg)
sys.exit(1)
- print(cfg, file=f)
+ print(cfg[0], file=f)
if 'check' not in self.config or not self.config['check']:
print('Test doesn\'t specify any files to check')
@@ -474,6 +474,25 @@ class TestManager:
shutil.rmtree("dtd",ignore_errors=True)
shutil.copytree(self.args.inputdir+"/dtd", "dtd")
+def split_and_keep(s, sep):
+ if not s: return []
+
+ # Find replacement character that is not used in string
+ # i.e. just use the highest available character plus one
+ # Note: This fails if ord(max(s)) = 0x10FFFF (ValueError)
+ p=chr(ord(max(s))+1)
+
+ retVal = []
+ for val in s.replace(sep, p+sep).split(p):
+ vv = val.split(" ",1)
+ if ((len(vv) == 1) and not vv[0] == ''):
+ retVal += vv
+ if ((len(vv) == 2) and not vv[1] == ''):
+ retVal += vv
+ if ((len(vv) == 2) and vv[1] == ''):
+ retVal += [vv[0]]
+ return retVal
+
def main():
# argument handling
parser = argparse.ArgumentParser(description='run doxygen tests')
@@ -524,7 +543,9 @@ def main():
parser.add_argument('--cfg',nargs='+',dest='cfgs',action='append',help=
'run test with extra doxygen configuration settings '
'(the option may be specified multiple times')
- test_flags = os.getenv('TEST_FLAGS', default='').split()
+
+ test_flags = split_and_keep(os.getenv('TEST_FLAGS', default=''), '--')
+
args = parser.parse_args(test_flags + sys.argv[1:])
# sanity check