|
- import platform
-
- if platform.system() != "Windows":
- import signal
- else:
- signal = None
-
- __all__ = ['TimeoutError', 'WindowsError', 'TimeoutContext']
-
-
- class TimeoutError(Exception):
- pass
-
-
- class WindowsError(Exception):
- pass
-
-
- class TimeoutContext():
- """Timeout class using ALARM signal."""
-
- def __init__(self, sec):
- self.sec = sec
-
- def __enter__(self):
- if signal is None:
- raise WindowsError("Windows is not supported for this test")
-
- signal.signal(signal.SIGALRM, self.raise_timeout)
- signal.alarm(self.sec)
-
- def __exit__(self, *args):
- signal.alarm(0) # disable alarm
-
- def raise_timeout(self, *args):
- raise TimeoutError("A timeout error have been raised.")
|