diff options
author | Thomas Otto <th1000s@posteo.net> | 2023-05-08 22:49:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-08 16:49:05 -0400 |
commit | b3ee8400dd955e2ecb80b06863da306e42f31d2d (patch) | |
tree | ce5653a4f174c646cb54b8647dd2e568f4b4e50a /src | |
parent | ce41a39bf6ebd3b7bbac4c73954cf6078ed96fc5 (diff) |
Fix submodule diff parsing (#1413)
Added support for an optional -dirty hash suffix which is present
in `git diff` output when files were changed in a submodule.
Diffstat (limited to 'src')
-rw-r--r-- | src/handlers/submodule.rs | 2 | ||||
-rw-r--r-- | src/tests/test_example_diffs.rs | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/handlers/submodule.rs b/src/handlers/submodule.rs index 4578594a..f4cf4c16 100644 --- a/src/handlers/submodule.rs +++ b/src/handlers/submodule.rs @@ -51,7 +51,7 @@ impl<'a> StateMachine<'a> { lazy_static! { static ref SUBMODULE_SHORT_LINE_REGEX: Regex = - Regex::new("^[-+]Subproject commit ([0-9a-f]{40})$").unwrap(); + Regex::new("^[-+]Subproject commit ([0-9a-f]{40})(-dirty)?$").unwrap(); } pub fn get_submodule_short_commit(line: &str) -> Option<&str> { diff --git a/src/tests/test_example_diffs.rs b/src/tests/test_example_diffs.rs index 2fca095c..b3595149 100644 --- a/src/tests/test_example_diffs.rs +++ b/src/tests/test_example_diffs.rs @@ -194,6 +194,20 @@ mod tests { } #[test] + fn test_simple_dirty_submodule_diff() { + DeltaTest::with_args(&["--width", "30"]) + .with_input(SUBMODULE_DIRTY) + .inspect() + .expect_after_skip( + 1, + r#" + some_submodule + ────────────────────────────── + ca030fd..803be42"#, + ); + } + + #[test] fn test_submodule_diff_log() { // See etc/examples/662-submodules // diff.submodule = log @@ -1936,6 +1950,16 @@ This is a regular file that contains: +Some text with a plus "; + const SUBMODULE_DIRTY: &str = "\ +diff --git a/some_submodule b/some_submodule +index ca030fd1a0..803be42ca4 160000 +--- a/some_submodule ++++ b/some_submodule +@@ -1 +1 @@ +-Subproject commit ca030fd1a02225a6fc1a834c480276d9c97a8c6f ++Subproject commit 803be42ca46af0fbc65b54a9abfb499389516939-dirty +"; + // See etc/examples/662-submodules // diff.submodule = log const SUBMODULE_DIFF_LOG: &str = "\ |