annotate Lib/test/win_console_handler.py @ 65035:87f4b32905df 2.7

Cosmetic fix to use print function.
author Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
date Fri, 01 Oct 2010 10:48:47 +0000
parents a430f8fec4a0
children acdb32005c0a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60199
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
1 """Script used to test os.kill on Windows, for issue #1220212
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
2
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
3 This script is started as a subprocess in test_os and is used to test the
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
4 CTRL_C_EVENT and CTRL_BREAK_EVENT signals, which requires a custom handler
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
5 to be written into the kill target.
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
6
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
7 See http://msdn.microsoft.com/en-us/library/ms685049%28v=VS.85%29.aspx for a
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
8 similar example in C.
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
9 """
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
10
65017
a430f8fec4a0 Merged revisions 85109 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 60371
diff changeset
11 from ctypes import wintypes, WINFUNCTYPE
60199
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
12 import signal
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
13 import ctypes
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
14
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
15 # Function prototype for the handler function. Returns BOOL, takes a DWORD.
65017
a430f8fec4a0 Merged revisions 85109 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents: 60371
diff changeset
16 HandlerRoutine = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD)
60199
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
17
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
18 def _ctrl_handler(sig):
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
19 """Handle a sig event and return 0 to terminate the process"""
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
20 if sig == signal.CTRL_C_EVENT:
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
21 pass
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
22 elif sig == signal.CTRL_BREAK_EVENT:
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
23 pass
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
24 else:
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
25 print("UNKNOWN EVENT")
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
26 return 0
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
27
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
28 ctrl_handler = HandlerRoutine(_ctrl_handler)
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
29
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
30
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
31 SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
32 SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL)
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
33 SetConsoleCtrlHandler.restype = wintypes.BOOL
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
34
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
35 if __name__ == "__main__":
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
36 # Add our console control handling function with value 1
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
37 if not SetConsoleCtrlHandler(ctrl_handler, 1):
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
38 print("Unable to add SetConsoleCtrlHandler")
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
39 exit(-1)
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
40
d4799ee64c23 set svn:eol-style on new file
Benjamin Peterson <benjamin@python.org>
parents: 60197
diff changeset
41 # Do nothing but wait for the signal
60371
9fd8852ecdd4 Fix a failing test on an apparently slow Windows buildbot.
Brian Curtin <brian.curtin@gmail.com>
parents: 60199
diff changeset
42 while True:
9fd8852ecdd4 Fix a failing test on an apparently slow Windows buildbot.
Brian Curtin <brian.curtin@gmail.com>
parents: 60199
diff changeset
43 pass