xacli_testing/assert/
code.rs1use super::{Asserter, ExecuteAsserter};
4use crate::TestingError;
5
6pub fn success() -> Box<dyn Asserter> {
8 Box::new(ExecuteAsserter::new(
9 "success",
10 "Exit code is 0",
11 Box::new(|result| {
12 if result.code == 0 {
13 Ok(())
14 } else {
15 Err(TestingError::Assertion(format!(
16 "Expected: exit code 0\nActual: exit code {}\nMatch: exact",
17 result.code
18 )))
19 }
20 }),
21 ))
22}
23
24pub fn failure() -> Box<dyn Asserter> {
26 Box::new(ExecuteAsserter::new(
27 "failure",
28 "Exit code is non-zero",
29 Box::new(|result| {
30 if result.code != 0 {
31 Ok(())
32 } else {
33 Err(TestingError::Assertion(
34 "Expected: non-zero exit code\nActual: exit code 0\nMatch: not equal"
35 .to_string(),
36 ))
37 }
38 }),
39 ))
40}
41
42pub fn code(expected: i64) -> Box<dyn Asserter> {
44 Box::new(ExecuteAsserter::new(
45 format!("code({})", expected),
46 format!("Exit code is {}", expected),
47 Box::new(move |result| {
48 if result.code == expected {
49 Ok(())
50 } else {
51 Err(TestingError::Assertion(format!(
52 "Expected: exit code {}\nActual: exit code {}\nMatch: exact",
53 expected, result.code
54 )))
55 }
56 }),
57 ))
58}