Commit e423e077 authored by Antoine Pitrou's avatar Antoine Pitrou

Inherit interpreter flags in parallel testing

parent dc93cd90
...@@ -391,9 +391,6 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, ...@@ -391,9 +391,6 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
usage("-T and -j don't go together!") usage("-T and -j don't go together!")
if use_mp and findleaks: if use_mp and findleaks:
usage("-l and -j don't go together!") 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 = [] good = []
bad = [] bad = []
...@@ -534,6 +531,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, ...@@ -534,6 +531,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
) )
yield (test, args_tuple) yield (test, args_tuple)
pending = tests_and_args() pending = tests_and_args()
opt_args = support.args_from_interpreter_flags()
base_cmd = [sys.executable] + opt_args + ['-m', 'test.regrtest']
def work(): def work():
# A worker thread. # A worker thread.
try: try:
...@@ -544,8 +543,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, ...@@ -544,8 +543,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
output.put((None, None, None, None)) output.put((None, None, None, None))
return return
# -E is needed by some tests, e.g. test_import # -E is needed by some tests, e.g. test_import
popen = Popen([sys.executable, '-E', '-m', 'test.regrtest', popen = Popen(base_cmd + ['--slaveargs', json.dumps(args_tuple)],
'--slaveargs', json.dumps(args_tuple)],
stdout=PIPE, stderr=PIPE, stdout=PIPE, stderr=PIPE,
universal_newlines=True, universal_newlines=True,
close_fds=(os.name != 'nt')) close_fds=(os.name != 'nt'))
......
...@@ -1327,3 +1327,22 @@ def strip_python_stderr(stderr): ...@@ -1327,3 +1327,22 @@ def strip_python_stderr(stderr):
""" """
stderr = re.sub(br"\[\d+ refs\]\r?\n?$", b"", stderr).strip() stderr = re.sub(br"\[\d+ refs\]\r?\n?$", b"", stderr).strip()
return stderr 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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment