]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-109566: Fix regrtest Python options for WASM/WASI (#109954)
authorVictor Stinner <vstinner@python.org>
Wed, 27 Sep 2023 10:01:16 +0000 (12:01 +0200)
committerGitHub <noreply@github.com>
Wed, 27 Sep 2023 10:01:16 +0000 (12:01 +0200)
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.

Lib/test/libregrtest/main.py
Lib/test/libregrtest/worker.py
Lib/test/test_regrtest.py

index c31d5ff187c56a4c01fc7002f4012a358ba5a7b4..45a68a8465d8e0ebcb0c6e770dca1164e6e43d06 100644 (file)
@@ -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
index 610e0a8437839d97ff1a52a4d8b01af733ea73bc..67f26cfe75fbe4dfd5d25109446a910a2f926663 100644 (file)
@@ -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]
index 3ece31be9af3c3f64995e72a60bc29087fbe114a..e0568cb2a91bc2df8534952df2eedcc820a23d9d 100644 (file)
@@ -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):