restore one test

This commit is contained in:
Luke Boswell 2024-08-15 14:34:00 +10:00
parent 49f5ea88fc
commit 29289694b5
No known key found for this signature in database
GPG key ID: F6DB3C9DB47377B0
2 changed files with 19 additions and 12 deletions

View file

@ -342,17 +342,19 @@ mod cli_run {
output
}
// when you want to run `roc test` to execute `expect`s, perhaps on a library rather than an application.
/// Run `roc test` to execute `expect`s, perhaps on a library rather than an application.
fn test_roc_expect(dir_name: &str, roc_filename: &str, flags: &[&str], expected_ending: &str) {
_ = get_output_with_stdin(
file_path_from_root(dir_name, roc_filename).as_path(),
vec![],
flags,
&[],
&[],
UseValgrind::Yes,
TestCliCommands::Test,
);
// TODO - do we want to run with Valgrind?
let out = Run::new_roc()
.arg(CMD_TEST)
.arg(file_path_from_root(dir_name, roc_filename).as_path())
.add_args(flags)
.run();
out.assert_clean_success();
out.assert_stdout_ends_with(expected_ending);
}
// when you don't need args, stdin or extra_env

View file

@ -69,15 +69,20 @@ impl Out {
);
}
/// Normalise the output for comparison in tests by stripping ANSI color codes
/// and replace test timings with a placeholder.
pub fn stdout_without_test_timings(&self) -> String {
let ansi_regex = Regex::new(r"\x1b\[[0-9;]*[mGKH]").expect("Invalid ANSI regex pattern");
let without_ansi = ansi_regex.replace_all(&self.stdout, "");
let regex = Regex::new(r" in (\d+) ms\.").expect("Invalid regex pattern");
let replacement = " in <ignored for test> ms.";
regex.replace_all(&self.stdout, replacement).to_string()
regex.replace_all(&without_ansi, replacement).to_string()
}
pub fn assert_stdout_ends_with(&self, expected: &str) {
assert!(
self.stdout_without_test_timings().ends_with(expected),
dbg!(self.stdout_without_test_timings()).ends_with(expected),
"Expected stdout to end with:\n{}\n\nActual stdout:\n{}",
expected,
self.stdout