]> git.proxmox.com Git - rustc.git/blob - vendor/tokio/tests/rt_handle.rs
New upstream version 1.72.1+dfsg1
[rustc.git] / vendor / tokio / tests / rt_handle.rs
1 #![warn(rust_2018_idioms)]
2 #![cfg(feature = "full")]
3
4 use tokio::runtime::Runtime;
5
6 #[test]
7 fn basic_enter() {
8 let rt1 = rt();
9 let rt2 = rt();
10
11 let enter1 = rt1.enter();
12 let enter2 = rt2.enter();
13
14 drop(enter2);
15 drop(enter1);
16 }
17
18 #[test]
19 #[should_panic]
20 fn interleave_enter_different_rt() {
21 let rt1 = rt();
22 let rt2 = rt();
23
24 let enter1 = rt1.enter();
25 let enter2 = rt2.enter();
26
27 drop(enter1);
28 drop(enter2);
29 }
30
31 #[test]
32 #[should_panic]
33 fn interleave_enter_same_rt() {
34 let rt1 = rt();
35
36 let _enter1 = rt1.enter();
37 let enter2 = rt1.enter();
38 let enter3 = rt1.enter();
39
40 drop(enter2);
41 drop(enter3);
42 }
43
44 #[test]
45 #[cfg(not(tokio_wasi))]
46 fn interleave_then_enter() {
47 let _ = std::panic::catch_unwind(|| {
48 let rt1 = rt();
49 let rt2 = rt();
50
51 let enter1 = rt1.enter();
52 let enter2 = rt2.enter();
53
54 drop(enter1);
55 drop(enter2);
56 });
57
58 // Can still enter
59 let rt3 = rt();
60 let _enter = rt3.enter();
61 }
62
63 fn rt() -> Runtime {
64 tokio::runtime::Builder::new_current_thread()
65 .build()
66 .unwrap()
67 }