summaryrefslogtreecommitdiffstats
path: root/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py
diff options
context:
space:
mode:
authorimarom <imarom@cisco.com>2016-03-20 16:29:23 +0200
committerimarom <imarom@cisco.com>2016-03-21 14:49:06 +0200
commit7e7cc8a3f9cfa4b0bda18b50ea79145c6bc2a045 (patch)
treec74b87de7ba812f1d0ace7d834bcefae73528c0c /scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py
parent14b94326315f1fa46187868dac16503b3f454b9e (diff)
python 3 - rearrange
Diffstat (limited to 'scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py')
-rw-r--r--scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py
new file mode 100644
index 00000000..55657bda
--- /dev/null
+++ b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py
@@ -0,0 +1,56 @@
+from __future__ import print_function
+
+import os
+
+from functools import wraps
+from zmq.tests import BaseZMQTestCase
+from zmq.utils.win32 import allow_interrupt
+
+
+def count_calls(f):
+ @wraps(f)
+ def _(*args, **kwds):
+ try:
+ return f(*args, **kwds)
+ finally:
+ _.__calls__ += 1
+ _.__calls__ = 0
+ return _
+
+
+class TestWindowsConsoleControlHandler(BaseZMQTestCase):
+
+ def test_handler(self):
+ @count_calls
+ def interrupt_polling():
+ print('Caught CTRL-C!')
+
+ if os.name == 'nt':
+ from ctypes import windll
+ from ctypes.wintypes import BOOL, DWORD
+
+ kernel32 = windll.LoadLibrary('kernel32')
+
+ # <http://msdn.microsoft.com/en-us/library/ms683155.aspx>
+ GenerateConsoleCtrlEvent = kernel32.GenerateConsoleCtrlEvent
+ GenerateConsoleCtrlEvent.argtypes = (DWORD, DWORD)
+ GenerateConsoleCtrlEvent.restype = BOOL
+
+ try:
+ # Simulate CTRL-C event while handler is active.
+ with allow_interrupt(interrupt_polling):
+ result = GenerateConsoleCtrlEvent(0, 0)
+ if result == 0:
+ raise WindowsError
+ except KeyboardInterrupt:
+ pass
+ else:
+ self.fail('Expecting `KeyboardInterrupt` exception!')
+
+ # Make sure our handler was called.
+ self.assertEqual(interrupt_polling.__calls__, 1)
+ else:
+ # On non-Windows systems, this utility is just a no-op!
+ with allow_interrupt(interrupt_polling):
+ pass
+ self.assertEqual(interrupt_polling.__calls__, 0)