diff --git a/src/handlers/diff_header.rs b/src/handlers/diff_header.rs index 2a098175a..e5de98e2d 100644 --- a/src/handlers/diff_header.rs +++ b/src/handlers/diff_header.rs @@ -468,6 +468,8 @@ pub fn get_file_change_description_from_file_paths( #[cfg(test)] mod tests { use super::*; + use crate::tests::integration_test_utils::{make_config_from_args, DeltaTest}; + use insta::assert_snapshot; #[test] fn test_get_filename_from_marker_line() { @@ -637,4 +639,41 @@ mod tests { Some(".config/Code - Insiders/User/settings.json".to_string()) ); } + + pub const BIN_AND_TXT_FILE_ADDED: &str = "\ +diff --git a/BIN b/BIN +new file mode 100644 +index 0000000..a5d0c46 +Binary files /dev/null and b/BIN differ +diff --git a/TXT b/TXT +new file mode 100644 +index 0000000..323fae0 +--- /dev/null ++++ b/TXT +@@ -0,0 +1 @@ ++plain text"; + + #[test] + fn test_diff_header_relative_paths() { + // rustfmt ignores the assert macro arguments, so do the setup outside + let mut cfg = make_config_from_args(&["--width=40", "--relative-paths"]); + cfg.cwd_relative_to_repo_root = Some("src/".into()); + let result = DeltaTest::with_config(&cfg) + .with_input(BIN_AND_TXT_FILE_ADDED) + .output; + assert_snapshot!(result, @r###" + + added: ../BIN (binary file) + ──────────────────────────────────────── + + added: ../TXT + ──────────────────────────────────────── + + ───┐ + 1: │ + ───┘ + plain text + "### + ); + } } diff --git a/src/handlers/diff_header_misc.rs b/src/handlers/diff_header_misc.rs index b120fb2fd..8749fd126 100644 --- a/src/handlers/diff_header_misc.rs +++ b/src/handlers/diff_header_misc.rs @@ -1,4 +1,5 @@ use crate::delta::{DiffType, Source, State, StateMachine}; +use crate::utils::path::relativize_path_maybe; impl<'a> StateMachine<'a> { #[inline] @@ -29,9 +30,11 @@ impl<'a> StateMachine<'a> { } if self.minus_file != "/dev/null" { + relativize_path_maybe(self.config, &mut self.minus_file); self.minus_file.push_str(" (binary file)"); } if self.plus_file != "/dev/null" { + relativize_path_maybe(self.config, &mut self.plus_file); self.plus_file.push_str(" (binary file)"); } return Ok(true); diff --git a/src/tests/test_example_diffs.rs b/src/tests/test_example_diffs.rs index c686924f2..167f5500c 100644 --- a/src/tests/test_example_diffs.rs +++ b/src/tests/test_example_diffs.rs @@ -126,7 +126,6 @@ mod tests { "bash", ]); let output = integration_test_utils::run_delta(MODIFIED_BASH_AND_CSHARP_FILES, &config); - eprintln!("{}", &output); ansi_test_utils::assert_line_has_syntax_highlighted_substring( &output, 19,