v / vlib / os
Raw file | 35 loc (30 sloc) | 898 bytes | Latest commit hash 18cccb6ca
1import os
2
3fn former_handler(signal os.Signal) {
4 println('former_handler')
5 exit(0)
6}
7
8fn default_handler(signal os.Signal) {
9 println('default_handler')
10 exit(0)
11}
12
13fn test_signal_opt() {
14 os.signal_opt(.int, default_handler) or { assert false }
15}
16
17fn test_signal_opt_invalid_argument() {
18 // Can't register a signal on SIGKILL
19 if _ := os.signal_opt(.kill, default_handler) {
20 assert false
21 }
22 os.signal_opt(.kill, default_handler) or {
23 assert err.msg() == 'Invalid argument; code: 22'
24 assert err.code() == 22
25 }
26}
27
28fn test_signal_opt_return_former_handler() {
29 func1 := os.signal_opt(.term, former_handler) or { panic('unexpected error') }
30 assert isnil(func1)
31 func2 := os.signal_opt(.term, default_handler) or { panic('unexpected error') }
32 assert !isnil(func2)
33 // this should work, but makes the CI fail because of a bug in clang -fsanitize=memory
34 // assert func2 == former_handler
35}