summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1995-03-16 15:07:38 (GMT)
committerGuido van Rossum <guido@python.org>1995-03-16 15:07:38 (GMT)
commit4f17e3e2f94f334965f304aa65056af3fcdbbca3 (patch)
tree9edd8549f6ecfd8611afd7634c2942838fdd335e
parenta54754719d5f44a898b549ae8ad6940f5a04ed42 (diff)
downloadcpython-4f17e3e2f94f334965f304aa65056af3fcdbbca3.zip
cpython-4f17e3e2f94f334965f304aa65056af3fcdbbca3.tar.gz
cpython-4f17e3e2f94f334965f304aa65056af3fcdbbca3.tar.bz2
test signal module
-rw-r--r--Lib/test/test_signal.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
new file mode 100644
index 0000000..bfcf517
--- /dev/null
+++ b/Lib/test/test_signal.py
@@ -0,0 +1,50 @@
+# Test the signal module
+
+import signal
+import os
+
+
+pid = os.getpid()
+
+# Shell script that will send us asynchronous signals
+script = """
+(
+ set -x
+ sleep 2
+ kill -5 %(pid)d
+ sleep 2
+ kill -2 %(pid)d
+ sleep 2
+ kill -3 %(pid)d
+) &
+""" % vars()
+
+def handlerA(*args):
+ print "handlerA", args
+
+HandlerBCalled = "HandlerBCalled" # Exception
+
+def handlerB(*args):
+ print "handlerB", args
+ raise HandlerBCalled, args
+
+signal.alarm(20) # Entire test lasts at most 20 sec.
+signal.signal(5, handlerA)
+signal.signal(2, handlerB)
+signal.signal(3, signal.SIG_IGN)
+signal.signal(signal.SIGALRM, signal.default_int_handler)
+
+os.system(script)
+
+print "starting pause() loop..."
+
+try:
+ while 1:
+ print "call pause()..."
+ try:
+ signal.pause()
+ print "pause() returned"
+ except HandlerBCalled:
+ print "HandlerBCalled exception caught"
+except KeyboardInterrupt:
+ print "KeyboardInterrupt (assume the alarm() went off)"