diff options
| author | Thomas Otto <th1000s@posteo.net> | 2024-07-06 08:48:52 +0200 |
|---|---|---|
| committer | Dan Davison <dandavison7@gmail.com> | 2024-07-09 00:00:18 +0100 |
| commit | 5d538b23039058d50f218611f714ff40d5cd883d (patch) | |
| tree | bc8f48644efa13fa62a6bddf0df8e1a74af3d2d2 /src | |
| parent | 995dc41525a1a53c71f89a4371f8b24c2edf9ead (diff) | |
Make relative-paths work with binary files
`relativize_path_maybe()` was not called in this case. Added
test and converted a few existing ones to insta.
Diffstat (limited to 'src')
| -rw-r--r-- | src/handlers/diff_header.rs | 41 | ||||
| -rw-r--r-- | src/handlers/diff_header_misc.rs | 3 | ||||
| -rw-r--r-- | src/tests/test_example_diffs.rs | 58 |
3 files changed, 82 insertions, 20 deletions
diff --git a/src/handlers/diff_header.rs b/src/handlers/diff_header.rs index 7379f2f..4614611 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,43 @@ 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(&["--relative-paths", "-s"]); + cfg.cwd_relative_to_repo_root = Some("src/utils/".into()); + let result = DeltaTest::with_config(&cfg) + .with_input(BIN_AND_TXT_FILE_ADDED) + .output; + // convert windows '..\' to unix '../' paths + insta::with_settings!({filters => vec![(r"\.\.\\", "../")]}, { + assert_snapshot!(result, @r###" + + added: ../../BIN (binary file) + ─────────────────────────────────────────── + + added: ../../TXT + ─────────────────────────────────────────── + + ───┐ + 1: │ + ───┘ + │ │ │ 1 │plain text + "###) + }); + } } diff --git a/src/handlers/diff_header_misc.rs b/src/handlers/diff_header_misc.rs index b120fb2..0a75b37 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(&mut self.minus_file, self.config); self.minus_file.push_str(" (binary file)"); } if self.plus_file != "/dev/null" { + relativize_path_maybe(&mut self.plus_file, self.config); 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 0d208e3..9ee3ca5 100644 --- a/src/tests/test_example_diffs.rs +++ b/src/tests/test_example_diffs.rs @@ -8,6 +8,7 @@ mod tests { use crate::tests::ansi_test_utils::ansi_test_utils; use crate::tests::integration_test_utils; use crate::tests::integration_test_utils::DeltaTest; + use insta::assert_snapshot; #[test] fn test_added_file() { @@ -126,7 +127,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, @@ -311,37 +311,55 @@ index 0123456..1234567 100644 #[test] fn test_binary_files_differ() { - let config = - integration_test_utils::make_config_from_args(&["--file-modified-label", "modified:"]); - let output = integration_test_utils::run_delta(BINARY_FILES_DIFFER, &config); - let output = strip_ansi_codes(&output); - assert!(output.contains("\nmodified: foo (binary file)\n")); + let output = DeltaTest::with_args(&["--file-modified-label", "modified:"]) + .with_input(BINARY_FILES_DIFFER) + .skip_header(); + + assert_snapshot!(output, @r###" + + modified: foo (binary file) + ─────────────────────────────────────────── + "###); } #[test] fn test_binary_file_added() { - let config = integration_test_utils::make_config_from_args(&[]); - let output = integration_test_utils::run_delta(BINARY_FILE_ADDED, &config); - let output = strip_ansi_codes(&output); - assert!(output.contains("\nadded: foo (binary file)\n")); + let output = DeltaTest::with_args(&[]) + .with_input(BINARY_FILE_ADDED) + .skip_header(); + assert_snapshot!(output, @r###" + + added: foo (binary file) + ─────────────────────────────────────────── + "###); } #[test] fn test_binary_file_removed() { - let config = integration_test_utils::make_config_from_args(&[]); - let output = integration_test_utils::run_delta(BINARY_FILE_REMOVED, &config); - let output = strip_ansi_codes(&output); - assert!(output.contains("\nremoved: foo (binary file)\n")); + let output = DeltaTest::with_args(&[]) + .with_input(BINARY_FILE_REMOVED) + .skip_header(); + assert_snapshot!(output, @r###" + + removed: foo (binary file) + ─────────────────────────────────────────── + "###); } #[test] fn test_binary_files_differ_after_other() { - let config = - integration_test_utils::make_config_from_args(&["--file-modified-label", "modified:"]); - let output = integration_test_utils::run_delta(BINARY_FILES_DIFFER_AFTER_OTHER, &config); - let output = strip_ansi_codes(&output); - assert!(output.contains("\nrenamed: foo ⟶ bar\n")); - assert!(output.contains("\nmodified: qux (binary file)\n")); + let output = DeltaTest::with_args(&["--file-modified-label", "modified:"]) + .with_input(BINARY_FILES_DIFFER_AFTER_OTHER) + .output; + assert_snapshot!(output, @r###" + + + renamed: foo ⟶ bar + ─────────────────────────────────────────── + + modified: qux (binary file) + ─────────────────────────────────────────── + "###); } #[test] |
