Merged revisions 80476 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r80476 | michael.foord | 2010-04-25 20:02:46 +0100 (Sun, 25 Apr 2010) | 1 line

  Adding unittest.removeHandler function / decorator for removing the signal.SIGINT signal handler. With tests and docs.
........
This commit is contained in:
Michael Foord 2010-04-25 19:53:49 +00:00
parent af30c5d32e
commit de4ceabfd8
4 changed files with 67 additions and 38 deletions

View file

@ -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)