use super::Guard;
use std::fmt;
pub struct ExitStatus<'cmd> {
code: i32,
#[allow(dead_code)]
guard: Option<Guard<'cmd>>,
}
impl<'cmd> ExitStatus<'cmd> {
pub(super) fn new(code: i32, guard: Option<Guard<'cmd>>) -> Self {
Self { code, guard }
}
pub fn code(&self) -> i32 {
self.code
}
pub fn success(&self) -> bool {
self.code == 0
}
pub fn expect_success(&self) {
assert_eq!(
0, self.code,
"process exited with error status: {}",
self.code
);
}
pub fn expect_code(&self, code: i32) {
assert_eq!(
code, self.code,
"process exited with status code: {} (expected {})",
self.code, code
)
}
}
impl fmt::Debug for ExitStatus<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "ExitStatus({})", self.code)
}
}