diff options
author | Michael Foord <michael@voidspace.org.uk> | 2013-01-29 23:14:59 +0000 |
---|---|---|
committer | Michael Foord <michael@voidspace.org.uk> | 2013-01-29 23:14:59 +0000 |
commit | d1da29c99d7704be75abac8651ec2f6adba6e4ab (patch) | |
tree | ea1d3452a71916e3ff2a9bdbd22ef876835e797c /Lib/unittest/signals.py | |
parent | bd41d1b14c03e76c6ebf396720eddba60f00c8dc (diff) | |
parent | 6debd769393c9c5cdd4feb2a0c74bda173a13b1e (diff) | |
download | cpython-git-d1da29c99d7704be75abac8651ec2f6adba6e4ab.tar.gz |
Merge
Diffstat (limited to 'Lib/unittest/signals.py')
-rw-r--r-- | Lib/unittest/signals.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/Lib/unittest/signals.py b/Lib/unittest/signals.py index fc31043283..e6a5fc5243 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) |