[Python-checkins] cpython: Issue #23485: Fix test_signal, select.select() now retries the syscall if the

victor.stinner python-checkins at python.org
Mon Mar 30 22:10:10 CEST 2015


https://hg.python.org/cpython/rev/17b6d0d7da00
changeset:   95305:17b6d0d7da00
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Mon Mar 30 22:09:14 2015 +0200
summary:
  Issue #23485: Fix test_signal, select.select() now retries the syscall if the
signal handler does not raise an exception

files:
  Lib/test/test_signal.py |  20 +++++++++++++++++---
  1 files changed, 17 insertions(+), 3 deletions(-)


diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -418,13 +418,20 @@
             TIMEOUT_FULL = 10
             TIMEOUT_HALF = 5
 
+            class InterruptSelect(Exception):
+                pass
+
+            def handler(signum, frame):
+                raise InterruptSelect
+            signal.signal(signal.SIGALRM, handler)
+
             signal.alarm(1)
 
             # We attempt to get a signal during the sleep,
             # before select is called
             try:
                 select.select([], [], [], TIMEOUT_FULL)
-            except InterruptedError:
+            except InterruptSelect:
                 pass
             else:
                 raise Exception("select() was not interrupted")
@@ -445,15 +452,22 @@
             TIMEOUT_FULL = 10
             TIMEOUT_HALF = 5
 
+            class InterruptSelect(Exception):
+                pass
+
+            def handler(signum, frame):
+                raise InterruptSelect
+            signal.signal(signal.SIGALRM, handler)
+
             signal.alarm(1)
             before_time = time.monotonic()
             # We attempt to get a signal during the select call
             try:
                 select.select([read], [], [], TIMEOUT_FULL)
-            except OSError:
+            except InterruptSelect:
                 pass
             else:
-                raise Exception("OSError not raised")
+                raise Exception("select() was not interrupted")
             after_time = time.monotonic()
             dt = after_time - before_time
             if dt >= TIMEOUT_HALF:

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list