1 use crate::runtime::{Builder, Handle};
2 
3 #[test]
join_handle_cancel_on_shutdown()4 fn join_handle_cancel_on_shutdown() {
5     let mut builder = loom::model::Builder::new();
6     builder.preemption_bound = Some(2);
7     builder.check(|| {
8         use futures::future::FutureExt;
9 
10         let rt = Builder::new_multi_thread()
11             .worker_threads(2)
12             .build()
13             .unwrap();
14 
15         let handle = rt.block_on(async move { Handle::current() });
16 
17         let jh1 = handle.spawn(futures::future::pending::<()>());
18 
19         drop(rt);
20 
21         let jh2 = handle.spawn(futures::future::pending::<()>());
22 
23         let err1 = jh1.now_or_never().unwrap().unwrap_err();
24         let err2 = jh2.now_or_never().unwrap().unwrap_err();
25         assert!(err1.is_cancelled());
26         assert!(err2.is_cancelled());
27     });
28 }
29