diff options
Diffstat (limited to 'vendor/tester/src/helpers/exit_code.rs')
-rw-r--r-- | vendor/tester/src/helpers/exit_code.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/vendor/tester/src/helpers/exit_code.rs b/vendor/tester/src/helpers/exit_code.rs new file mode 100644 index 000000000..31e234d98 --- /dev/null +++ b/vendor/tester/src/helpers/exit_code.rs @@ -0,0 +1,20 @@ +//! Helper module to detect subprocess exit code. + +use std::process::ExitStatus; + +#[cfg(not(unix))] +pub fn get_exit_code(status: ExitStatus) -> Result<i32, String> { + status.code().ok_or("received no exit code from child process".into()) +} + +#[cfg(unix)] +pub fn get_exit_code(status: ExitStatus) -> Result<i32, String> { + use std::os::unix::process::ExitStatusExt; + match status.code() { + Some(code) => Ok(code), + None => match status.signal() { + Some(signal) => Err(format!("child process exited with signal {}", signal)), + None => Err("child process exited with unknown signal".into()), + }, + } +} |