summaryrefslogtreecommitdiffstats
path: root/tclsignal/tests
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2019-01-03 16:52:10 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2019-01-03 16:52:10 (GMT)
commit2fdbadf22c26555d560602932f3063cb5e1d034a (patch)
treef2f5e3de86f5a13bb995e07a28ad7bdf5b320079 /tclsignal/tests
parentfa6e0263b87ec0165be0a3a774e0bbdccc069f57 (diff)
parent39b56148245456816b3bd4b9341f4bb498644093 (diff)
downloadblt-2fdbadf22c26555d560602932f3063cb5e1d034a.zip
blt-2fdbadf22c26555d560602932f3063cb5e1d034a.tar.gz
blt-2fdbadf22c26555d560602932f3063cb5e1d034a.tar.bz2
Merge commit '39b56148245456816b3bd4b9341f4bb498644093' as 'tclsignal'
Diffstat (limited to 'tclsignal/tests')
-rwxr-xr-xtclsignal/tests/test_sig.tk31
-rwxr-xr-xtclsignal/tests/test_sig_async.tk50
2 files changed, 81 insertions, 0 deletions
diff --git a/tclsignal/tests/test_sig.tk b/tclsignal/tests/test_sig.tk
new file mode 100755
index 0000000..feca784
--- /dev/null
+++ b/tclsignal/tests/test_sig.tk
@@ -0,0 +1,31 @@
+#!/usr/local/bin/wish4.1
+# ENSURE YOUR TCLLIBPATH includes /usr/local/lib/signal!
+# (or uncomment the appropriate load line and comment the package line)
+# --SUN
+# load /usr/local/lib/signal_ext.so
+# --HP
+# load /usr/local/lib/signal_ext.sl
+package require Signal
+
+signal add 21 { wm iconify . ; wm deiconify . }
+signal add SIGHUP { puts "Signal 1 received" }
+signal add SIGINT { puts "SIGINT received" }
+
+puts "Showing all the signals handled"
+puts [signal print]
+puts "Showing how 3 is handled"
+puts [signal print 3]
+puts "Showing how SIGTTOU is handled"
+puts [signal print SIGTTOU]
+
+frame .bottom
+button .bottom.b -text "Done" -command "exit 0"
+button .bottom.i -text "Iconify" -command "wm iconify ."
+label .l -wraplength 40m -text {
+Sending this process signals 1 (HUP) or 2 (^C or INT) will print messages; signal 21 (URG) will pop it up!
+}
+
+pack .bottom.b -side left -fill x
+pack .bottom.i -side right -fill x
+pack .l -side top -fill both -expand true
+pack .bottom -in . -side bottom -fill x
diff --git a/tclsignal/tests/test_sig_async.tk b/tclsignal/tests/test_sig_async.tk
new file mode 100755
index 0000000..24ac543
--- /dev/null
+++ b/tclsignal/tests/test_sig_async.tk
@@ -0,0 +1,50 @@
+#!/usr/local/bin/wish4.1
+# ENSURE YOUR TCLLIBPATH includes /usr/local/lib/signal!
+# (or uncomment the appropriate load line and comment the package line)
+# --SUN
+# load /usr/local/lib/signal_ext.so
+# --HP
+# load /usr/local/lib/signal_ext.sl
+
+# Proc to do something absurd for a long time
+proc do_long_job { } {
+ for { set i 0 } { $i < 300000 } { incr i } { expr $i * $i }
+}
+
+package require Signal
+
+signal add 21 { wm iconify . ; wm deiconify . }
+signal add SIGHUP { puts "Signal 1 received" }
+signal add SIGINT { puts "SIGINT received" ; error "SIGINT interrupt" } -async
+signal add SIGQUIT { puts "SIGQUIT received" } -async
+
+puts "Showing all the signals handled"
+puts [signal print]
+puts "Showing how 3 is handled"
+puts [signal print 3]
+puts "Showing how SIGTTOU is handled"
+puts [signal print SIGTTOU]
+
+frame .bottom
+button .bottom.b -text "Done" -command "exit 0"
+button .bottom.j -text "Long Job" -command do_long_job
+button .bottom.i -text "Iconify" -command "wm iconify ."
+label .l -wraplength 60m -justify l -text {
+Sending this process SIGHUP will (eventually) result in a message;
+
+SIGQUIT (^\) will result in a message immediately.
+
+SIGINT (^C) will result in an error trace immediately. This is the result of the -async option on signal handlers
+
+Signal 21 (URG) will pop the dialog up!
+
+Pressing the "Long Job" button will perform a single, long calculation where no buttons presses will have immediate effect, but SIGINT will interrupt the calculation prematurely
+}
+
+pack .bottom.b -side left -fill x
+pack .bottom.j -side left -fill x
+pack .bottom.i -side right -fill x
+pack .l -side top -fill both -expand true
+pack .bottom -in . -side bottom -fill x
+
+update