diff options
| author | AN Long <aisk@users.noreply.github.com> | 2024-01-10 23:17:05 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-10 23:17:05 (GMT) |
| commit | fafb3275f25e116e51ff0b867aec597cb3de840f (patch) | |
| tree | 69129802c1dca20bcbcb62653092541bf7a53207 | |
| parent | 1d75fa43a25e5f3c33f2aaaec28fab9430834792 (diff) | |
| download | cpython-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.py | 15 |
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 |
