aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Curtin <brian.curtin@gmail.com>2010-05-28 15:49:21 +0000
committerBrian Curtin <brian.curtin@gmail.com>2010-05-28 15:49:21 +0000
commit83cba05c30db591e7425dfbfb4b87a179f98aa70 (patch)
treecd8362628a1181e074005edfae459651fa5cf616
parentIssue #1759169: Drop _XOPEN_SOURCE on Solaris. (diff)
downloadcpython-83cba05c30db591e7425dfbfb4b87a179f98aa70.tar.gz
cpython-83cba05c30db591e7425dfbfb4b87a179f98aa70.tar.bz2
cpython-83cba05c30db591e7425dfbfb4b87a179f98aa70.zip
Fix #8405 for slow buildbots. Remove the sleep on startup and move the
pipe communication into a loop to retry in case a buildbot gets even slower.
-rw-r--r--Lib/test/test_os.py27
1 files changed, 16 insertions, 11 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index e19825214d6..67de20ec3f9 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -706,17 +706,22 @@ class Win32KillTests(unittest.TestCase):
stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
- # Let the process start up (See #3137)
- time.sleep(0.5)
-
- # Create a string buffer to store the result of stdout from the pipe
- buf = ctypes.create_string_buffer(len(msg))
- # Obtain the text currently in proc.stdout
- # Bytes read/avail/left are left as NULL and unused
- rslt = PeekNamedPipe(msvcrt.get_osfhandle(proc.stdout.fileno()), buf,
- ctypes.sizeof(buf), None, None, None)
- self.assertNotEqual(rslt, 0, "PeekNamedPipe failed")
- self.assertEqual(msg, buf.value)
+ count, max = 0, 100
+ while count < max and proc.poll() is None:
+ # Create a string buffer to store the result of stdout from the pipe
+ buf = ctypes.create_string_buffer(len(msg))
+ # Obtain the text currently in proc.stdout
+ # Bytes read/avail/left are left as NULL and unused
+ rslt = PeekNamedPipe(msvcrt.get_osfhandle(proc.stdout.fileno()),
+ buf, ctypes.sizeof(buf), None, None, None)
+ self.assertNotEqual(rslt, 0, "PeekNamedPipe failed")
+ if buf.value:
+ self.assertEqual(msg, buf.value)
+ break
+ time.sleep(0.1)
+ count += 1
+ else:
+ self.fail("Did not receive communication from the subprocess")
os.kill(proc.pid, sig)
self.assertEqual(proc.wait(), sig)