diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-14 11:12:00 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-14 11:12:00 (GMT) |
commit | 1b03f2ca83d6232845c2dadf47c2e15b32c1d906 (patch) | |
tree | 91c6df7fdce2e33a6d8fc33461d5dbeb16737f71 /Lib | |
parent | 9a6692f6d7784365ae07094694c754d2b153b719 (diff) | |
download | cpython-1b03f2ca83d6232845c2dadf47c2e15b32c1d906.zip cpython-1b03f2ca83d6232845c2dadf47c2e15b32c1d906.tar.gz cpython-1b03f2ca83d6232845c2dadf47c2e15b32c1d906.tar.bz2 |
Inherit interpreter flags in parallel testing
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/test/regrtest.py | 8 | ||||
-rw-r--r-- | Lib/test/support.py | 19 |
2 files changed, 22 insertions, 5 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 55c73e2..64d0a7c 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -391,9 +391,6 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, usage("-T and -j don't go together!") if use_mp and findleaks: usage("-l and -j don't go together!") - if use_mp and max(sys.flags): - # TODO: inherit the environment and the flags - print("Warning: flags and environment variables are ignored with -j option") good = [] bad = [] @@ -534,6 +531,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, ) yield (test, args_tuple) pending = tests_and_args() + opt_args = support.args_from_interpreter_flags() + base_cmd = [sys.executable] + opt_args + ['-m', 'test.regrtest'] def work(): # A worker thread. try: @@ -544,8 +543,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, output.put((None, None, None, None)) return # -E is needed by some tests, e.g. test_import - popen = Popen([sys.executable, '-E', '-m', 'test.regrtest', - '--slaveargs', json.dumps(args_tuple)], + popen = Popen(base_cmd + ['--slaveargs', json.dumps(args_tuple)], stdout=PIPE, stderr=PIPE, universal_newlines=True, close_fds=(os.name != 'nt')) diff --git a/Lib/test/support.py b/Lib/test/support.py index 08ce0a0..1f69317 100644 --- a/Lib/test/support.py +++ b/Lib/test/support.py @@ -1327,3 +1327,22 @@ def strip_python_stderr(stderr): """ stderr = re.sub(br"\[\d+ refs\]\r?\n?$", b"", stderr).strip() return stderr + +def args_from_interpreter_flags(): + """Return a list of command-line arguments reproducing the current + settings in sys.flags.""" + flag_opt_map = { + 'bytes_warning': 'b', + 'dont_write_bytecode': 'B', + 'ignore_environment': 'E', + 'no_user_site': 's', + 'no_site': 'S', + 'optimize': 'O', + 'verbose': 'v', + } + args = [] + for flag, opt in flag_opt_map.items(): + v = getattr(sys.flags, flag) + if v > 0: + args.append('-' + opt * v) + return args |