diff options
Diffstat (limited to 'Lib/unittest/signals.py')
-rw-r--r-- | Lib/unittest/signals.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/unittest/signals.py b/Lib/unittest/signals.py index 0651cf2..fc31043 100644 --- a/Lib/unittest/signals.py +++ b/Lib/unittest/signals.py @@ -1,6 +1,8 @@ import signal import weakref +from functools import wraps + __unittest = True @@ -36,3 +38,20 @@ def installHandler(): default_handler = signal.getsignal(signal.SIGINT) _interrupt_handler = _InterruptHandler(default_handler) signal.signal(signal.SIGINT, _interrupt_handler) + + +def removeHandler(method=None): + if method is not None: + @wraps(method) + def inner(*args, **kwargs): + initial = signal.getsignal(signal.SIGINT) + removeHandler() + try: + return method(*args, **kwargs) + finally: + signal.signal(signal.SIGINT, initial) + return inner + + global _interrupt_handler + if _interrupt_handler is not None: + signal.signal(signal.SIGINT, _interrupt_handler.default_handler) |