Print out the first N lines that mismatched in the snapshot.

This commit is contained in:
Markus Westerlind 2018-10-20 22:35:11 +02:00
parent c8df49872d
commit 66158dada1
2 changed files with 16 additions and 4 deletions

View File

@ -940,8 +940,9 @@ fn verify_lalrpop_generates_itself() {
let actual = fs::read_to_string(grammar_file.with_extension("rs")).unwrap();
let expected = fs::read_to_string(copied_grammar_file.with_extension("rs")).unwrap();
assert!(
actual == expected,
util::compare_str(
&actual,
&expected,
"The snapshot does not match what lalrpop generates now.\n\
Use ./snap.sh to generate a new snapshot of the lrgrammar",
);

View File

@ -84,7 +84,15 @@ pub fn compare<D: Debug, E: Debug>(actual: D, expected: E) {
let actual_s = format!("{:#?}", actual);
let expected_s = format!("{:#?}", expected);
for diff in diff::lines(&actual_s, &expected_s) {
compare_str(&actual_s, &expected_s, "");
}
}
pub fn compare_str(actual: &str, expected: &str, msg: &str) {
if actual != expected {
let mut lines = 0;
for diff in diff::lines(actual, expected).into_iter().take(100) {
lines += 1;
match diff {
diff::Result::Right(r) => println!("- {}", r),
diff::Result::Left(l) => println!("+ {}", l),
@ -92,6 +100,9 @@ pub fn compare<D: Debug, E: Debug>(actual: D, expected: E) {
}
}
assert!(false);
if lines >= 100 {
println!("... more");
}
assert!(false, "{}", msg);
}
}