]> granicus.if.org Git - python/commitdiff
Issue #12363: improve siginterrupt() tests
authorVictor Stinner <victor.stinner@haypocalc.com>
Wed, 22 Jun 2011 20:15:51 +0000 (22:15 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Wed, 22 Jun 2011 20:15:51 +0000 (22:15 +0200)
Add a basic synchronization code between the child and the parent processes:
the child writes "ready" to stdout.

Lib/test/test_signal.py

index e613f5bc630741799709b96cb6b2e2b711f34530..8a5a4083a07ba5639a702a5776d97b9e9f38602b 100644 (file)
@@ -333,6 +333,9 @@ class SiginterruptTest(unittest.TestCase):
             def handler(signum, frame):
                 pass
 
+            print("ready")
+            sys.stdout.flush()
+
             signal.signal(signal.SIGALRM, handler)
             if interrupt is not None:
                 signal.siginterrupt(signal.SIGALRM, interrupt)
@@ -353,11 +356,15 @@ class SiginterruptTest(unittest.TestCase):
         """ % (interrupt,)
         with spawn_python('-c', code) as process:
             try:
+                # wait until the child process is loaded and has started
+                first_line = process.stdout.readline()
+
                 stdout, stderr = process.communicate(timeout=3.0)
             except subprocess.TimeoutExpired:
                 process.kill()
                 return False
             else:
+                stdout = first_line + stdout
                 exitcode = process.wait()
                 if exitcode not in (2, 3):
                     raise Exception("Child error (exit code %s): %s"