summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-09-27 10:01:16 (GMT)
committerGitHub <noreply@github.com>2023-09-27 10:01:16 (GMT)
commit91fb8daa2494df4dd6a841ca8c742a03175c7ecd (patch)
tree69cf7d8fc8f8108ac9804f690849856bf88563dd
parentb1aebf1e6576680d606068d17e2208259573e061 (diff)
downloadcpython-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.
-rw-r--r--Lib/test/libregrtest/main.py9
-rw-r--r--Lib/test/libregrtest/worker.py6
-rw-r--r--Lib/test/test_regrtest.py13
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):