forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			640 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			640 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| #![warn(rust_2018_idioms)]
 | |
| #![cfg(feature = "full")]
 | |
| #![cfg(unix)]
 | |
| 
 | |
| mod support {
 | |
|     pub mod signal;
 | |
| }
 | |
| use support::signal::send_signal;
 | |
| 
 | |
| use tokio::signal;
 | |
| use tokio::sync::oneshot;
 | |
| use tokio_test::assert_ok;
 | |
| 
 | |
| #[tokio::test]
 | |
| async fn ctrl_c() {
 | |
|     let ctrl_c = signal::ctrl_c();
 | |
| 
 | |
|     let (fire, wait) = oneshot::channel();
 | |
| 
 | |
|     // NB: simulate a signal coming in by exercising our signal handler
 | |
|     // to avoid complications with sending SIGINT to the test process
 | |
|     tokio::spawn(async {
 | |
|         wait.await.expect("wait failed");
 | |
|         send_signal(libc::SIGINT);
 | |
|     });
 | |
| 
 | |
|     let _ = fire.send(());
 | |
| 
 | |
|     assert_ok!(ctrl_c.await);
 | |
| }
 | 
