From 4f226751b4c357933487ddb275cd65d19fe13eaa Mon Sep 17 00:00:00 2001 From: AN Long Date: Wed, 10 Jan 2024 00:40:43 +0800 Subject: [PATCH 1/5] improve the assert for test_one_environment_variable --- Lib/test/test_subprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 102e697ba7a90d..9bb6bf3c766d92 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -844,7 +844,7 @@ def test_one_environment_variable(self): 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")) + self.assertEqual(stdout.strip(), b"fruit=orange") def test_invalid_cmd(self): # null character in the command name From a9821511ad46bcda98c56a3cab9d8b7a8fe22b01 Mon Sep 17 00:00:00 2001 From: AN Long Date: Wed, 10 Jan 2024 02:07:51 +0800 Subject: [PATCH 2/5] Update Lib/test/test_subprocess.py Co-authored-by: Steve Dower --- Lib/test/test_subprocess.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 9bb6bf3c766d92..ce7ebea6ea220a 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -843,7 +843,11 @@ def test_one_environment_variable(self): if sys.platform == "win32": cmd = ["CMD", "/c", "SET", "fruit"] with subprocess.Popen(cmd, stdout=subprocess.PIPE, env=newenv) as p: - stdout, _ = p.communicate() + 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): From 6788414de7ce5f6ec4f674c38604d52ea11e3e6f Mon Sep 17 00:00:00 2001 From: AN Long Date: Wed, 10 Jan 2024 17:26:04 +0800 Subject: [PATCH 3/5] Update Lib/test/test_subprocess.py Co-authored-by: Steve Dower --- Lib/test/test_subprocess.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index ce7ebea6ea220a..fc14d841a8fe27 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -842,7 +842,7 @@ def test_one_environment_variable(self): '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: + 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")) From 9a252238aecd4fb0c9b9e53f63a60badf3dafaf1 Mon Sep 17 00:00:00 2001 From: AN Long Date: Wed, 10 Jan 2024 20:17:34 +0800 Subject: [PATCH 4/5] skip some test in test_subprocess when python is configured with shared --- Lib/test/test_subprocess.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index fc14d841a8fe27..b66b52c518b4a4 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -835,6 +835,9 @@ def is_env_var_to_ignore(n): 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 ' + 'with an empty environment.') def test_one_environment_variable(self): newenv = {'fruit': 'orange'} cmd = [sys.executable, '-c', From 567124606a3b9933ce2a6d5b8f33fb7cd83f8e1c Mon Sep 17 00:00:00 2001 From: AN Long Date: Wed, 10 Jan 2024 21:07:19 +0800 Subject: [PATCH 5/5] also skip the test if AddressSanitizer is enabled --- Lib/test/test_subprocess.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index b66b52c518b4a4..944a7de4210bc9 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -837,7 +837,9 @@ def is_env_var_to_ignore(n): @unittest.skipIf(sysconfig.get_config_var('Py_ENABLE_SHARED') == 1, 'The Python shared library cannot be loaded ' - 'with an empty environment.') + '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',