Improve binary change descriptions

pull/907/head
Wilfred Hughes 2025-10-22 00:49:42 +07:00
parent 711d399758
commit a96ed2de96
2 changed files with 27 additions and 7 deletions

@ -974,11 +974,31 @@ fn print_diff_result(display_options: &DisplayOptions, summary: &DiffResult) {
match summary.has_byte_changes {
Some((lhs_len, rhs_len)) => {
let format_options = FormatSizeOptions::from(BINARY).decimal_places(1);
println!(
"Binary contents changed (old: {}, new: {}).\n",
&format_size(lhs_len, format_options),
&format_size(rhs_len, format_options),
)
if lhs_len == 0 {
// Strictly speaking this is wrong:
// previously we may have had an empty but
// existent file. In that case, it's a
// file modification instead of a file
// creation.
//
// TODO: Fix this pedantic case.
println!(
"Binary file added ({}).\n",
&format_size(rhs_len, format_options),
)
} else if rhs_len == 0 {
println!(
"Binary file removed ({}).\n",
&format_size(lhs_len, format_options),
)
} else {
println!(
"Binary file modified (old: {}, new: {}).\n",
&format_size(lhs_len, format_options),
&format_size(rhs_len, format_options),
)
}
}
None => println!("No changes.\n"),
}

@ -57,7 +57,7 @@ fn binary_changed() {
.arg("img/logo.png")
.arg("/dev/null");
let predicate_fn = predicate::str::contains("Binary contents changed");
let predicate_fn = predicate::str::contains("Binary file removed");
cmd.assert().stdout(predicate_fn);
}
@ -68,7 +68,7 @@ fn binary_override() {
cmd.arg("--override-binary=*.js")
.arg("sample_files/simple_1.js")
.arg("sample_files/simple_2.js");
let predicate_fn = predicate::str::contains("Binary contents changed");
let predicate_fn = predicate::str::contains("Binary file modified");
cmd.assert().stdout(predicate_fn);
}