Index: test/CMakeLists.txt =================================================================== --- test/CMakeLists.txt +++ test/CMakeLists.txt @@ -136,8 +136,7 @@ ) # Generate a wrapper for dotest.py in the bin directory. -string (REPLACE ";" " " LLDB_DOTEST_ARGS_STR "${LLDB_DOTEST_ARGS}") -# We need this to substitute variables. +# We need configure_file to substitute variables. configure_file( lldb-dotest.in ${CMAKE_CURRENT_BINARY_DIR}/lldb-dotest.configured Index: test/lldb-dotest.in =================================================================== --- test/lldb-dotest.in +++ test/lldb-dotest.in @@ -1,18 +1,16 @@ #!/usr/bin/env python +import subprocess import sys -import os dotest_path = '@LLDB_SOURCE_DIR@/test/dotest.py' -dotest_args = '@LLDB_DOTEST_ARGS_STR@' +dotest_args_str = '@LLDB_DOTEST_ARGS_STR@' if __name__ == '__main__': - # Wrap arguments in single quotes. This is necessary because we want to - # forward the arguments and otherwise we might split up arguments that were - # originally wrapped in single quotes. - wrapper_args = list("'" + i + "'" for i in sys.argv[1:]) - # FIXME: It would be nice if we can mimic the approach taken by llvm-lit - # and pass a python configuration straight to dotest, rather than going - # through the operating system. - command = '{} -q {} {}'.format(dotest_path, dotest_args, - ' '.join(wrapper_args)) - os.system(command) + wrapper_args = sys.argv[1:] + dotest_args = dotest_args_str.split(';')[:-1] + # Build dotest.py command. + cmd = [dotest_path, '-q'] + cmd.extend(dotest_args) + cmd.extend(wrapper_args) + # Invoke dotest.py + subprocess.call(cmd)