mirror of
https://github.com/python/cpython.git
synced 2026-01-07 07:52:29 +00:00
[3.13] gh-116742: Fix subprocess test_check_output_timeout() (GH-130836) (#130873)
gh-116742: Fix subprocess test_check_output_timeout() (GH-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.
(cherry picked from commit 67a942d427)
Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
6321e1ab4b
commit
aa2c4e4417
1 changed files with 5 additions and 22 deletions
|
|
@ -268,21 +268,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
|
||||
|
|
@ -1693,20 +1685,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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue