diff Lib/test/test_subprocess.py @ 59349:021cb4f4559a

Merged revisions 78671 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r78671 | florent.xicluna | 2010-03-05 01:47:40 +0100 (ven, 05 mar 2010) | 3 lines Workaround #3137: Retry SIGINT if it is not received the first time. test_send_signal should not hang anymore on various Linux distributions. ........
author Florent Xicluna <florent.xicluna@gmail.com>
date Fri, 05 Mar 2010 00:52:00 +0000
parents 04955e7eb597
children 432f8ba67381
line wrap: on
line diff
--- a/Lib/test/test_subprocess.py	Fri Mar 05 00:36:02 2010 +0000
+++ b/Lib/test/test_subprocess.py	Fri Mar 05 00:52:00 2010 +0000
@@ -652,9 +652,20 @@
         p = subprocess.Popen([sys.executable, "-c", "input()"])
 
         # Let the process initialize correctly (Issue #3137)
-        time.sleep(.1)
+        time.sleep(0.1)
         self.assertIs(p.poll(), None)
-        p.send_signal(signal.SIGINT)
+        count, maxcount = 0, 3
+        # Retry if the process do not receive the SIGINT signal.
+        while count < maxcount and p.poll() is None:
+            p.send_signal(signal.SIGINT)
+            time.sleep(0.1)
+            count += 1
+        if p.poll() is None:
+            raise support.TestFailed("the subprocess did not receive "
+                                     "the signal SIGINT")
+        elif count > 1:
+            print("p.send_signal(SIGINT) succeeded "
+                  "after {} attempts".format(count), file=sys.stderr)
         self.assertNotEqual(p.wait(), 0)
 
     def test_kill(self):
@@ -839,6 +850,7 @@
                   ProcessTestCaseNoPoll,
                   HelperFunctionTests)
 
+    unit_tests = (POSIXProcessTestCase,)
     support.run_unittest(*unit_tests)
     support.reap_children()