aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/os/signal_test.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/vlib/os/signal_test.v')
-rw-r--r--v_windows/v/vlib/os/signal_test.v35
1 files changed, 35 insertions, 0 deletions
diff --git a/v_windows/v/vlib/os/signal_test.v b/v_windows/v/vlib/os/signal_test.v
new file mode 100644
index 0000000..1c56540
--- /dev/null
+++ b/v_windows/v/vlib/os/signal_test.v
@@ -0,0 +1,35 @@
+import os
+
+fn former_handler(signal os.Signal) {
+ println('former_handler')
+ exit(0)
+}
+
+fn default_handler(signal os.Signal) {
+ println('default_handler')
+ exit(0)
+}
+
+fn test_signal_opt() {
+ os.signal_opt(.int, default_handler) or { assert false }
+}
+
+fn test_signal_opt_invalid_argument() {
+ // Can't register a signal on SIGKILL
+ if _ := os.signal_opt(.kill, default_handler) {
+ assert false
+ }
+ os.signal_opt(.kill, default_handler) or {
+ assert err.msg == 'Invalid argument'
+ assert err.code == 22
+ }
+}
+
+fn test_signal_opt_return_former_handler() {
+ func1 := os.signal_opt(.term, former_handler) or { panic('unexpected error') }
+ assert isnil(func1)
+ func2 := os.signal_opt(.term, default_handler) or { panic('unexpected error') }
+ assert !isnil(func2)
+ // this should work, but makes the CI fail because of a bug in clang -fsanitize=memory
+ // assert func2 == former_handler
+}