36 lines
		
	
	
		
			884 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			884 B
		
	
	
	
		
			V
		
	
	
| 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
 | |
| }
 |