aboutsummaryrefslogtreecommitdiff
path: root/tcltests/test_signal2.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tcltests/test_signal2.tcl')
-rw-r--r--tcltests/test_signal2.tcl40
1 files changed, 40 insertions, 0 deletions
diff --git a/tcltests/test_signal2.tcl b/tcltests/test_signal2.tcl
new file mode 100644
index 0000000..ecbb88b
--- /dev/null
+++ b/tcltests/test_signal2.tcl
@@ -0,0 +1,40 @@
+signal ignore HUP TERM
+signal handle ALRM INT
+
+# Send both the handled signals.
+# Should not exit here
+alarm 1
+kill -INT [pid]
+sleep 2
+set x 0
+set signals {}
+try -signal {
+ # This should not execute
+ incr x
+} on signal {signals} {
+}
+check signal.1 $x 0
+check signal.2 [lsort $signals] "SIGALRM SIGINT"
+
+# Now no signals should be pending
+set x 0
+set signals {}
+alarm 1
+try -signal {
+ kill -HUP [pid]
+ signal throw TERM
+ # Should get here
+ incr x
+ sleep 10
+ # But not get here
+ incr x
+} on signal {signals} {
+}
+
+check signal.3 $x 1
+check signal.4 [lsort $signals] "SIGALRM"
+check signal.5 [lsort [signal check]] "SIGHUP SIGTERM"
+check signal.6 [lsort [signal check SIGTERM]] "SIGTERM"
+check signal.7 [lsort [signal check -clear SIGTERM]] "SIGTERM"
+check signal.8 [lsort [signal check -clear]] "SIGHUP"
+check signal.9 [lsort [signal check]] ""