]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix #8405 for slow buildbots. Remove the sleep on startup and move the
authorBrian Curtin <brian.curtin@gmail.com>
Fri, 28 May 2010 15:49:21 +0000 (15:49 +0000)
committerBrian Curtin <brian.curtin@gmail.com>
Fri, 28 May 2010 15:49:21 +0000 (15:49 +0000)
pipe communication into a loop to retry in case a buildbot gets even slower.

Lib/test/test_os.py

index e19825214d63b56fefb7cb8fbba5b1e6aaa1932a..67de20ec3f9ef00c11ca59cef91dc8a910fbb3c3 100644 (file)
@@ -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)