diff options
author | Victor Stinner <vstinner@python.org> | 2023-09-27 10:01:16 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-27 10:01:16 (GMT) |
commit | 91fb8daa2494df4dd6a841ca8c742a03175c7ecd (patch) | |
tree | 69cf7d8fc8f8108ac9804f690849856bf88563dd /Lib/test | |
parent | b1aebf1e6576680d606068d17e2208259573e061 (diff) | |
download | cpython-91fb8daa2494df4dd6a841ca8c742a03175c7ecd.zip cpython-91fb8daa2494df4dd6a841ca8c742a03175c7ecd.tar.gz cpython-91fb8daa2494df4dd6a841ca8c742a03175c7ecd.tar.bz2 |
gh-109566: Fix regrtest Python options for WASM/WASI (#109954)
WASM and WASI buildbots use multiple PYTHON environment variables
such as PYTHONPATH and _PYTHON_HOSTRUNNER. Don't use -E if the
--python=COMMAND option is used.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/libregrtest/main.py | 9 | ||||
-rw-r--r-- | Lib/test/libregrtest/worker.py | 6 | ||||
-rw-r--r-- | Lib/test/test_regrtest.py | 13 |
3 files changed, 20 insertions, 8 deletions
diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index c31d5ff..45a68a8 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -504,9 +504,12 @@ class Regrtest: if sys.flags.bytes_warning < 2: python_opts.append('-bb') - # Ignore PYTHON* environment variables - if not sys.flags.ignore_environment: - python_opts.append('-E') + # WASM/WASI buildbot builders pass multiple PYTHON environment + # variables such as PYTHONPATH and _PYTHON_HOSTRUNNER. + if not self.python_cmd: + # Ignore PYTHON* environment variables + if not sys.flags.ignore_environment: + python_opts.append('-E') if not python_opts: return diff --git a/Lib/test/libregrtest/worker.py b/Lib/test/libregrtest/worker.py index 610e0a8..67f26cf 100644 --- a/Lib/test/libregrtest/worker.py +++ b/Lib/test/libregrtest/worker.py @@ -22,11 +22,15 @@ def create_worker_process(runtests: RunTests, output_fd: int, python_cmd = runtests.python_cmd worker_json = runtests.as_json() + python_opts = support.args_from_interpreter_flags() if python_cmd is not None: executable = python_cmd + # Remove -E option, since --python=COMMAND can set PYTHON environment + # variables, such as PYTHONPATH, in the worker process. + python_opts = [opt for opt in python_opts if opt != "-E"] else: executable = (sys.executable,) - cmd = [*executable, *support.args_from_interpreter_flags(), + cmd = [*executable, *python_opts, '-u', # Unbuffered stdout and stderr '-m', 'test.libregrtest.worker', worker_json] diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py index 3ece31b..e0568cb 100644 --- a/Lib/test/test_regrtest.py +++ b/Lib/test/test_regrtest.py @@ -1965,16 +1965,20 @@ class ArgsTestCase(BaseTestCase): self.check_executed_tests(output, tests, stats=len(tests), parallel=True) - def check_reexec(self, option): + def check_add_python_opts(self, option): # --fast-ci and --slow-ci add "-u -W default -bb -E" options to Python code = textwrap.dedent(r""" import sys import unittest + from test import support try: from _testinternalcapi import get_config except ImportError: get_config = None + # WASI/WASM buildbots don't use -E option + use_environment = (support.is_emscripten or support.is_wasi) + class WorkerTests(unittest.TestCase): @unittest.skipUnless(get_config is None, 'need get_config()') def test_config(self): @@ -1986,7 +1990,7 @@ class ArgsTestCase(BaseTestCase): # -bb option self.assertTrue(config['bytes_warning'], 2) # -E option - self.assertTrue(config['use_environment'], 0) + self.assertTrue(config['use_environment'], use_environment) def test_python_opts(self): # -u option @@ -2000,7 +2004,8 @@ class ArgsTestCase(BaseTestCase): self.assertEqual(sys.flags.bytes_warning, 2) # -E option - self.assertTrue(sys.flags.ignore_environment) + self.assertEqual(not sys.flags.ignore_environment, + use_environment) """) testname = self.create_test(code=code) @@ -2018,7 +2023,7 @@ class ArgsTestCase(BaseTestCase): def test_add_python_opts(self): for opt in ("--fast-ci", "--slow-ci"): with self.subTest(opt=opt): - self.check_reexec(opt) + self.check_add_python_opts(opt) class TestUtils(unittest.TestCase): |