mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
tests: add _any
functions
This should make it easier to write tests that could have different valid outputs depending on timing.
This commit is contained in:
parent
8e7eedebe7
commit
98088db9ff
1 changed files with 29 additions and 0 deletions
|
@ -223,6 +223,18 @@ impl CmdResult {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// like `stdout_is`, but succeeds if any elements of `expected` matches stdout.
|
||||||
|
pub fn stdout_is_any<T: AsRef<str> + std::fmt::Debug>(&self, expected: Vec<T>) -> &CmdResult {
|
||||||
|
if !expected.iter().any(|msg| self.stdout_str() == msg.as_ref()) {
|
||||||
|
panic!(
|
||||||
|
"stdout was {}\nExpected any of {:#?}",
|
||||||
|
self.stdout_str(),
|
||||||
|
expected
|
||||||
|
)
|
||||||
|
}
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Like `stdout_is` but newlines are normalized to `\n`.
|
/// Like `stdout_is` but newlines are normalized to `\n`.
|
||||||
pub fn normalized_newlines_stdout_is<T: AsRef<str>>(&self, msg: T) -> &CmdResult {
|
pub fn normalized_newlines_stdout_is<T: AsRef<str>>(&self, msg: T) -> &CmdResult {
|
||||||
let msg = msg.as_ref().replace("\r\n", "\n");
|
let msg = msg.as_ref().replace("\r\n", "\n");
|
||||||
|
@ -257,6 +269,23 @@ impl CmdResult {
|
||||||
self.stdout_is(contents)
|
self.stdout_is(contents)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// like `stdout_is_templated_fixture`, but succeeds if any replacement by `template_vars` results in the actual stdout.
|
||||||
|
pub fn stdout_is_templated_fixture_any<T: AsRef<OsStr>>(
|
||||||
|
&self,
|
||||||
|
file_rel_path: T,
|
||||||
|
template_vars: &[Vec<(String, String)>],
|
||||||
|
) {
|
||||||
|
let contents = String::from_utf8(read_scenario_fixture(&self.tmpd, file_rel_path)).unwrap();
|
||||||
|
let possible_values = template_vars.iter().map(|vars| {
|
||||||
|
let mut contents = contents.clone();
|
||||||
|
for kv in vars.iter() {
|
||||||
|
contents = contents.replace(&kv.0, &kv.1);
|
||||||
|
}
|
||||||
|
contents
|
||||||
|
});
|
||||||
|
self.stdout_is_any(possible_values.collect());
|
||||||
|
}
|
||||||
|
|
||||||
/// asserts that the command resulted in stderr stream output that equals the
|
/// asserts that the command resulted in stderr stream output that equals the
|
||||||
/// passed in value, when both are trimmed of trailing whitespace
|
/// passed in value, when both are trimmed of trailing whitespace
|
||||||
/// stderr_only is a better choice unless stdout may or will be non-empty
|
/// stderr_only is a better choice unless stdout may or will be non-empty
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue