1 use crate::runtime::{Builder, Handle}; 2 3 #[test] join_handle_cancel_on_shutdown()4fn 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