1#![warn(rust_2018_idioms)]
2#![cfg(feature = "full")]
3#![cfg(windows)]
4
5use tokio::process::Command;
6use windows_sys::Win32::System::Threading::GetProcessId;
7
8#[tokio::test]
9async fn obtain_raw_handle() {
10 let mut cmd = Command::new("cmd");
11 cmd.kill_on_drop(true);
12 cmd.arg("/c");
13 cmd.arg("pause");
14
15 let child = cmd.spawn().unwrap();
16
17 let orig_id = child.id().expect("missing id");
18 assert!(orig_id > 0);
19
20 let handle = child.raw_handle().expect("process stopped");
21 let handled_id = unsafe { GetProcessId(handle as _) };
22 assert_eq!(handled_id, orig_id);
23}
24