aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/old/vlib/os/signal_test.v
blob: 1c56540c81e4fce927bd7c6d946a77c7c8c8a96a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
}