summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAN Long <aisk@users.noreply.github.com>2024-01-10 23:17:05 (GMT)
committerGitHub <noreply@github.com>2024-01-10 23:17:05 (GMT)
commitfafb3275f25e116e51ff0b867aec597cb3de840f (patch)
tree69129802c1dca20bcbcb62653092541bf7a53207
parent1d75fa43a25e5f3c33f2aaaec28fab9430834792 (diff)
downloadcpython-fafb3275f25e116e51ff0b867aec597cb3de840f.zip
cpython-fafb3275f25e116e51ff0b867aec597cb3de840f.tar.gz
cpython-fafb3275f25e116e51ff0b867aec597cb3de840f.tar.bz2
gh-87868: Skip `test_one_environment_variable` in `test_subprocess` when the platform or build cannot do that (#113867)
* improve the assert for test_one_environment_variable * skip some test in test_subprocess when python is configured with shared * also skip the test if AddressSanitizer is enabled --------- Co-authored-by: Steve Dower <steve.dower@microsoft.com>
-rw-r--r--Lib/test/test_subprocess.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 102e697..944a7de 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -835,6 +835,11 @@ class ProcessTestCase(BaseTestCase):
if not is_env_var_to_ignore(k)]
self.assertEqual(child_env_names, [])
+ @unittest.skipIf(sysconfig.get_config_var('Py_ENABLE_SHARED') == 1,
+ 'The Python shared library cannot be loaded '
+ 'without some system environments.')
+ @unittest.skipIf(check_sanitizer(address=True),
+ 'AddressSanitizer adds to the environment.')
def test_one_environment_variable(self):
newenv = {'fruit': 'orange'}
cmd = [sys.executable, '-c',
@@ -842,9 +847,13 @@ class ProcessTestCase(BaseTestCase):
'sys.stdout.write("fruit="+os.getenv("fruit"))']
if sys.platform == "win32":
cmd = ["CMD", "/c", "SET", "fruit"]
- with subprocess.Popen(cmd, stdout=subprocess.PIPE, env=newenv) as p:
- stdout, _ = p.communicate()
- self.assertTrue(stdout.startswith(b"fruit=orange"))
+ with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=newenv) as p:
+ stdout, stderr = p.communicate()
+ if p.returncode and support.verbose:
+ print("STDOUT:", stdout.decode("ascii", "replace"))
+ print("STDERR:", stderr.decode("ascii", "replace"))
+ self.assertEqual(p.returncode, 0)
+ self.assertEqual(stdout.strip(), b"fruit=orange")
def test_invalid_cmd(self):
# null character in the command name