shoulda_core/specifics/
command.rs

1use std::process::Output;
2
3use crate::{assertion_hook::NoOpAssertionHook, Should};
4
5impl<'a> Should<'a, Output> {
6    pub fn succeed(mut self) -> Should<'a, Output, NoOpAssertionHook> {
7        self.internal_assert(
8            self.inner.status.success(),
9            "command was not a success".to_string(),
10        );
11        self.normalize()
12    }
13
14    pub fn code(mut self, expected: i32) -> Should<'a, Output, NoOpAssertionHook> {
15        let actual = self.inner.status.code();
16        self.internal_assert(
17            actual == Some(expected),
18            format!("{:?} did not equal {}", actual, expected),
19        );
20        self.normalize()
21    }
22
23    pub fn stdout(mut self, bytes: &[u8]) -> Should<'a, Output, NoOpAssertionHook> {
24        self.internal_assert(
25            self.inner.stdout.as_slice() == bytes,
26            format!("{:?} did not equal {:?}", self.inner.stdout, bytes),
27        );
28        self.normalize()
29    }
30
31    pub fn stderr(mut self, bytes: &[u8]) -> Should<'a, Output, NoOpAssertionHook> {
32        self.internal_assert(
33            self.inner.stderr.as_slice() == bytes,
34            format!("{:?} did not equal {:?}", self.inner.stdout, bytes),
35        );
36        self.normalize()
37    }
38}