| use std::io::ErrorKind; | |
| use std::sync::OnceLock; | |
| use std::thread::{self, Builder, ThreadId}; | |
| static THREAD_ID: OnceLock<ThreadId> = OnceLock::new(); | |
| #[test] | |
| fn spawn_thread_would_block() { | |
| assert_eq!(Builder::new().spawn(|| unreachable!()).unwrap_err().kind(), ErrorKind::WouldBlock); | |
| THREAD_ID.set(thread::current().id()).unwrap(); | |
| } | |
| // Tests are run in alphabetical order, and the second test is dependent on the | |
| // first to set THREAD_ID. Do not rename the tests in such a way that `test_run_in_same_thread` | |
| // would run before `spawn_thread_would_block`. | |
| // See https://doc.rust-lang.org/rustc/tests/index.html#--shuffle | |
| #[test] | |
| fn test_run_in_same_thread() { | |
| assert_eq!(*THREAD_ID.get().unwrap(), thread::current().id()); | |
| } |