https://github.com/python/cpython/commit/67a942d4272145ccdbdf4ceff31318e176f71355
commit: 67a942d4272145ccdbdf4ceff31318e176f71355
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-03-05T10:51:33Z
summary:
gh-116742: Fix subprocess test_check_output_timeout() (#130836)
Fix a race condition in test_check_output_timeout() of
test_subprocess. Don't write into stdout anymore, since there is no
reliable way to synchronize the parent and the child processes.
Change the timeout from 3 seconds to 0.1 seconds, and remove
@requires_resource('walltime') decorator.
files:
M Lib/test/test_subprocess.py
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index e45701dfe033a6..645aa2cc7d9fea 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -269,21 +269,13 @@ def test_check_output_stdin_with_input_arg(self):
self.assertIn('stdin', c.exception.args[0])
self.assertIn('input', c.exception.args[0])
- @support.requires_resource('walltime')
def test_check_output_timeout(self):
# check_output() function with timeout arg
with self.assertRaises(subprocess.TimeoutExpired) as c:
output = subprocess.check_output(
[sys.executable, "-c",
- "import sys, time\n"
- "sys.stdout.write('BDFL')\n"
- "sys.stdout.flush()\n"
- "time.sleep(3600)"],
- # Some heavily loaded buildbots (sparc Debian 3.x) require
- # this much time to start and print.
- timeout=3)
- self.fail("Expected TimeoutExpired.")
- self.assertEqual(c.exception.output, b'BDFL')
+ "import time; time.sleep(3600)"],
+ timeout=0.1)
def test_call_kwargs(self):
# call() function with keyword args
@@ -1694,20 +1686,11 @@ def test_check_output_stdin_with_input_arg(self):
self.assertIn('stdin', c.exception.args[0])
self.assertIn('input', c.exception.args[0])
- @support.requires_resource('walltime')
def test_check_output_timeout(self):
with self.assertRaises(subprocess.TimeoutExpired) as c:
- cp = self.run_python((
- "import sys, time\n"
- "sys.stdout.write('BDFL')\n"
- "sys.stdout.flush()\n"
- "time.sleep(3600)"),
- # Some heavily loaded buildbots (sparc Debian 3.x) require
- # this much time to start and print.
- timeout=3, stdout=subprocess.PIPE)
- self.assertEqual(c.exception.output, b'BDFL')
- # output is aliased to stdout
- self.assertEqual(c.exception.stdout, b'BDFL')
+ cp = self.run_python(
+ "import time; time.sleep(3600)",
+ timeout=0.1, stdout=subprocess.PIPE)
def test_run_kwargs(self):
newenv = os.environ.copy()
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]