From 4527365ee4241246e437031b23dc62eb10b589e4 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 22 Jun 2011 22:15:51 +0200 Subject: Issue #12363: improve siginterrupt() tests Add a basic synchronization code between the child and the parent processes: the child writes "ready" to stdout. --- Lib/test/test_signal.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py index e613f5b..8a5a408 100644 --- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -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" -- cgit v0.12