mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			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);
 | 
						|
}
 |