blob: 5132eab10a112eae53f595496b180609d45c8245 [file] [log] [blame]
// Note that tests in this file are run on Linux as well as on platforms using process_unsupported
// Test that our emulation exactly matches Linux
//
// This test runs *on Linux* but it tests
// the implementation used on non-Unix `#[cfg(unix)]` platforms.
//
// I.e. we're using Linux as a proxy for "trad unix".
#[cfg(target_os = "linux")]
#[test]
fn compare_with_linux() {
use super::ExitStatus as Emulated;
use crate::os::unix::process::ExitStatusExt as _;
use crate::process::ExitStatus as Real;
// Check that we handle out-of-range values similarly, too.
for wstatus in -0xf_ffff..0xf_ffff {
let emulated = Emulated::from(wstatus);
let real = Real::from_raw(wstatus);
macro_rules! compare { { $method:ident } => {
assert_eq!(
emulated.$method(),
real.$method(),
"{wstatus:#x}.{}()",
stringify!($method),
);
} }
compare!(code);
compare!(signal);
compare!(core_dumped);
compare!(stopped_signal);
compare!(continued);
compare!(into_raw);
}
}