assertables/assert_program_args/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//! Assert macros for comparing programs with arguments.
//!
//! These macros help with calling external programs with arguments, then
//! capturing the standard output stream and standard error stream.
//!
//! These macros have corresponding macros in the module [`assert_command`](module@crate::assert_command).
//!
//! Compare command using program and arguments to standard output:
//!
//! * [`assert_program_args_stdout_eq!(program1, args1, program2, args2)`](macro@crate::assert_program_args_stdout_eq) ≈ command using program1 and args1 to stdout = command2 with program2 and args2 to stdout
//!
//! * [`assert_program_args_stdout_eq_expr!(program, args, expr)`](macro@crate::assert_program_args_stdout_eq_expr) ≈ command using program and args to stdout = expr
//!
//! * [`assert_program_args_stdout_contains!(program, args, containee)`](macro@crate::assert_program_args_stdout_contains) ≈ command using program and args to stdout contains containee
//!
//! * [`assert_program_args_stdout_is_match!(program, args, matcher)`](macro@crate::assert_program_args_stdout_is_match) ≈ matcher is match with command using program and args
//!
//! Compare command using program and arguments to standard output:
//!
//! * [`assert_program_args_stderr_eq!(program1, args1, program2, args2)`](macro@crate::assert_program_args_stderr_eq) ≈ command using program1 and args1 to stderr = command2 with program2 and args2 to stderr
//!
//! * [`assert_program_args_stderr_eq_expr!(program, args, expr)`](macro@crate::assert_program_args_stderr_eq_expr) ≈ command using program and args to stderr = expr
//!
//! * [`assert_program_args_stderr_contains!(program, args, containee)`](macro@crate::assert_program_args_stderr_contains) ≈ command using program and args to stderr contains containee
//!
//! * [`assert_program_args_stderr_is_match!(program, args, matcher)`](macro@crate::assert_program_args_stderr_is_match) ≈ matcher is match with command using program and args
//!
//!
//! # Example
//!
//! ```rust
//! use assertables::*;
//! # fn main() {
//! let a_program = "bin/printf-stdout";
//! let a_args = ["%s", "hello"];
//! let b_program = "bin/printf-stdout";
//! let b_args = ["%s%s%s%s%s", "h", "e", "l", "l", "o"];
//! assert_program_args_stdout_eq!(&a_program, &a_args, &b_program, &b_args);
//! # }
//! ```

#[macro_export]
macro_rules! assert_program_args_impl_prep {
    ($program:expr, $args:expr $(,)?) => {{
        match (&$program, &$args) {
            (program, args) => {
                let mut command = ::std::process::Command::new(program);
                command.args(args.into_iter());
                command.output()
            }
        }
    }};
}

// stdout
pub mod assert_program_args_stdout_eq;
pub mod assert_program_args_stdout_eq_expr;
pub mod assert_program_args_stdout_ge;
pub mod assert_program_args_stdout_ge_expr;
pub mod assert_program_args_stdout_gt;
pub mod assert_program_args_stdout_gt_expr;
pub mod assert_program_args_stdout_le;
pub mod assert_program_args_stdout_le_expr;
pub mod assert_program_args_stdout_lt;
pub mod assert_program_args_stdout_lt_expr;
pub mod assert_program_args_stdout_ne;
pub mod assert_program_args_stdout_ne_expr;

// stdout searches
pub mod assert_program_args_stdout_contains;
pub mod assert_program_args_stdout_is_match;

// stderr
pub mod assert_program_args_stderr_eq;
pub mod assert_program_args_stderr_eq_expr;
pub mod assert_program_args_stderr_ge;
pub mod assert_program_args_stderr_ge_expr;
pub mod assert_program_args_stderr_gt;
pub mod assert_program_args_stderr_gt_expr;
pub mod assert_program_args_stderr_le;
pub mod assert_program_args_stderr_le_expr;
pub mod assert_program_args_stderr_lt;
pub mod assert_program_args_stderr_lt_expr;
pub mod assert_program_args_stderr_ne;
pub mod assert_program_args_stderr_ne_expr;

// stderr searches
pub mod assert_program_args_stderr_contains;
pub mod assert_program_args_stderr_is_match;