1 #![warn(rust_2018_idioms)]
2 #![cfg(feature = "full")]
3 #![cfg(unix)]
4 #![cfg(panic = "unwind")]
5 #![cfg(not(miri))] // No `sigaction` on Miri.
6 
7 use std::error::Error;
8 use tokio::runtime::Builder;
9 use tokio::signal::unix::{signal, SignalKind};
10 
11 mod support {
12     pub mod panic;
13 }
14 use support::panic::test_panic;
15 
16 #[test]
signal_panic_caller() -> Result<(), Box<dyn Error>>17 fn signal_panic_caller() -> Result<(), Box<dyn Error>> {
18     let panic_location_file = test_panic(|| {
19         let rt = Builder::new_current_thread().build().unwrap();
20 
21         rt.block_on(async {
22             let kind = SignalKind::from_raw(-1);
23             let _ = signal(kind);
24         });
25     });
26 
27     // The panic location should be in this file
28     assert_eq!(&panic_location_file.unwrap(), file!());
29 
30     Ok(())
31 }
32