summaryrefslogtreecommitdiffstats
path: root/Lib/unittest/signals.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/unittest/signals.py')
-rw-r--r--Lib/unittest/signals.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/Lib/unittest/signals.py b/Lib/unittest/signals.py
index fc31043..e6a5fc5 100644
--- a/Lib/unittest/signals.py
+++ b/Lib/unittest/signals.py
@@ -9,6 +9,20 @@ __unittest = True
class _InterruptHandler(object):
def __init__(self, default_handler):
self.called = False
+ self.original_handler = default_handler
+ if isinstance(default_handler, int):
+ if default_handler == signal.SIG_DFL:
+ # Pretend it's signal.default_int_handler instead.
+ default_handler = signal.default_int_handler
+ elif default_handler == signal.SIG_IGN:
+ # Not quite the same thing as SIG_IGN, but the closest we
+ # can make it: do nothing.
+ def default_handler(unused_signum, unused_frame):
+ pass
+ else:
+ raise TypeError("expected SIGINT signal handler to be "
+ "signal.SIG_IGN, signal.SIG_DFL, or a "
+ "callable object")
self.default_handler = default_handler
def __call__(self, signum, frame):
@@ -54,4 +68,4 @@ def removeHandler(method=None):
global _interrupt_handler
if _interrupt_handler is not None:
- signal.signal(signal.SIGINT, _interrupt_handler.default_handler)
+ signal.signal(signal.SIGINT, _interrupt_handler.original_handler)