diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2015-03-30 20:09:14 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2015-03-30 20:09:14 (GMT) |
commit | 749a6a85c645648199eb4e855a9537a8b703ffeb (patch) | |
tree | a29d20aaa108a61fbe9ade91921dd90cf579d9eb /Lib/test/test_signal.py | |
parent | 9b16666f2f4a9ee1a586f70772cad6ed80419ec5 (diff) | |
download | cpython-749a6a85c645648199eb4e855a9537a8b703ffeb.zip cpython-749a6a85c645648199eb4e855a9537a8b703ffeb.tar.gz cpython-749a6a85c645648199eb4e855a9537a8b703ffeb.tar.bz2 |
Issue #23485: Fix test_signal, select.select() now retries the syscall if the
signal handler does not raise an exception
Diffstat (limited to 'Lib/test/test_signal.py')
-rw-r--r-- | 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 index 8718eae..65b36de 100644 --- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -418,13 +418,20 @@ class WakeupSignalTests(unittest.TestCase): 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 @@ class WakeupSignalTests(unittest.TestCase): 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: |