Fix error message printing wrong file names

The error messsages from `self_test` does not display correct file names
(it just prints `src/lib.rs` for every file). This commit fixes it.
This commit is contained in:
Seiichi Uchida 2018-01-10 17:17:18 +09:00
parent cb0b366b38
commit 727f7b08f2

View file

@ -166,7 +166,7 @@ fn assert_output(source: &Path, expected_filename: &Path) {
if !compare.is_empty() { if !compare.is_empty() {
let mut failures = HashMap::new(); let mut failures = HashMap::new();
failures.insert(source.to_owned(), compare); failures.insert(source.to_owned(), compare);
print_mismatches_default_message(failures, source.display()); print_mismatches_default_message(failures);
assert!(false, "Text does not match expected output"); assert!(false, "Text does not match expected output");
} }
} }
@ -281,7 +281,7 @@ fn check_files(files: Vec<PathBuf>) -> (Vec<FormatReport>, u32, u32) {
Ok(report) => reports.push(report), Ok(report) => reports.push(report),
Err(err) => { Err(err) => {
if let IdempotentCheckError::Mismatch(msg) = err { if let IdempotentCheckError::Mismatch(msg) = err {
print_mismatches_default_message(msg, file_name.display()); print_mismatches_default_message(msg);
} }
fails += 1; fails += 1;
} }
@ -293,13 +293,15 @@ fn check_files(files: Vec<PathBuf>) -> (Vec<FormatReport>, u32, u32) {
(reports, count, fails) (reports, count, fails)
} }
fn print_mismatches_default_message( fn print_mismatches_default_message(result: HashMap<PathBuf, Vec<Mismatch>>) {
result: HashMap<PathBuf, Vec<Mismatch>>, let mut t = term::stdout().unwrap();
file_name: std::path::Display, for (file_name, diff) in result {
) { let mismatch_msg_formatter =
print_mismatches(result, |line_num| { |line_num| format!("\nMismatch at {}:{}:", file_name.display(), line_num);
format!("\nMismatch at {}:{}:", file_name, line_num) print_diff(diff, &mismatch_msg_formatter, Color::Auto);
}); }
t.reset().unwrap();
} }
fn print_mismatches<T: Fn(u32) -> String>( fn print_mismatches<T: Fn(u32) -> String>(