#[macro_export]
macro_rules! assert_command_stderr_gt_as_result {
($a_command:expr, $b_command:expr $(,)?) => {{
match ($a_command.output(), $b_command.output()) {
(Ok(a), Ok(b)) => {
let a = a.stderr;
let b = b.stderr;
if a.gt(&b) {
Ok((a, b))
} else {
Err(
format!(
concat!(
"assertion failed: `assert_command_stderr_gt!(a_command, b_command)`\n",
"https://docs.rs/assertables/9.1.0/assertables/macro.assert_command_stderr_gt.html\n",
" a label: `{}`,\n",
" a debug: `{:?}`,\n",
" b label: `{}`,\n",
" b debug: `{:?}`,\n",
" a: `{:?}`,\n",
" b: `{:?}`"
),
stringify!($a_command),
$a_command,
stringify!($b_command),
$b_command,
a,
b
)
)
}
},
(a, b) => {
Err(
format!(
concat!(
"assertion failed: `assert_command_stderr_gt!(a_command, b_command)`\n",
"https://docs.rs/assertables/9.1.0/assertables/macro.assert_command_stderr_gt.html\n",
" a label: `{}`,\n",
" a debug: `{:?}`,\n",
" b label: `{}`,\n",
" b debug: `{:?}`,\n",
" a: `{:?}`,\n",
" b: `{:?}`"
),
stringify!($a_command),
$a_command,
stringify!($b_command),
$b_command,
a,
b
)
)
}
}
}};
}
#[cfg(test)]
mod tests {
use std::process::Command;
#[test]
fn gt() {
let mut a = Command::new("bin/printf-stderr");
a.args(["%s", "alfa"]);
let mut b = Command::new("bin/printf-stderr");
b.args(["%s", "aa"]);
let result = assert_command_stderr_gt_as_result!(a, b);
assert_eq!(
result.unwrap(),
(vec![b'a', b'l', b'f', b'a'], vec![b'a', b'a'])
);
}
#[test]
fn eq() {
let mut a = Command::new("bin/printf-stderr");
a.args(["%s", "alfa"]);
let mut b = Command::new("bin/printf-stderr");
b.args(["%s", "alfa"]);
let result = assert_command_stderr_gt_as_result!(a, b);
let actual = result.unwrap_err();
let expect = concat!(
"assertion failed: `assert_command_stderr_gt!(a_command, b_command)`\n",
"https://docs.rs/assertables/9.1.0/assertables/macro.assert_command_stderr_gt.html\n",
" a label: `a`,\n",
" a debug: `\"bin/printf-stderr\" \"%s\" \"alfa\"`,\n",
" b label: `b`,\n",
" b debug: `\"bin/printf-stderr\" \"%s\" \"alfa\"`,\n",
" a: `[97, 108, 102, 97]`,\n",
" b: `[97, 108, 102, 97]`"
);
assert_eq!(actual, expect);
}
#[test]
fn lt() {
let mut a = Command::new("bin/printf-stderr");
a.args(["%s", "alfa"]);
let mut b = Command::new("bin/printf-stderr");
b.args(["%s", "zz"]);
let result = assert_command_stderr_gt_as_result!(a, b);
let actual = result.unwrap_err();
let expect = concat!(
"assertion failed: `assert_command_stderr_gt!(a_command, b_command)`\n",
"https://docs.rs/assertables/9.1.0/assertables/macro.assert_command_stderr_gt.html\n",
" a label: `a`,\n",
" a debug: `\"bin/printf-stderr\" \"%s\" \"alfa\"`,\n",
" b label: `b`,\n",
" b debug: `\"bin/printf-stderr\" \"%s\" \"zz\"`,\n",
" a: `[97, 108, 102, 97]`,\n",
" b: `[122, 122]`"
);
assert_eq!(actual, expect);
}
}
#[macro_export]
macro_rules! assert_command_stderr_gt {
($a_command:expr, $b_command:expr $(,)?) => {{
match $crate::assert_command_stderr_gt_as_result!($a_command, $b_command) {
Ok(x) => x,
Err(err) => panic!("{}", err),
}
}};
($a_command:expr, $b_command:expr, $($message:tt)+) => {{
match $crate::assert_command_stderr_gt_as_result!($a_command, $b_command) {
Ok(x) => x,
Err(_err) => panic!("{}", $($message)+),
}
}};
}
#[macro_export]
macro_rules! debug_assert_command_stderr_gt {
($($arg:tt)*) => {
if $crate::cfg!(debug_assertions) {
$crate::assert_command_stderr_gt!($($arg)*);
}
};
}