]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t4015-diff-whitespace.sh
diff --color-moved=zebra: fix alternate coloring
[thirdparty/git.git] / t / t4015-diff-whitespace.sh
index 308dc1365966af0514d598a9ff0a46a2f8609ee9..4e0fd76c6c570d72b1a41a10c5bee4acef94bf3a 100755 (executable)
@@ -1442,6 +1442,78 @@ test_expect_success 'detect permutations inside moved code -- dimmed-zebra' '
        test_cmp expected actual
 '
 
+test_expect_success 'zebra alternate color is only used when necessary' '
+       cat >old.txt <<-\EOF &&
+       line 1A should be marked as oldMoved newMovedAlternate
+       line 1B should be marked as oldMoved newMovedAlternate
+       unchanged
+       line 2A should be marked as oldMoved newMovedAlternate
+       line 2B should be marked as oldMoved newMovedAlternate
+       line 3A should be marked as oldMovedAlternate newMoved
+       line 3B should be marked as oldMovedAlternate newMoved
+       unchanged
+       line 4A should be marked as oldMoved newMovedAlternate
+       line 4B should be marked as oldMoved newMovedAlternate
+       line 5A should be marked as oldMovedAlternate newMoved
+       line 5B should be marked as oldMovedAlternate newMoved
+       line 6A should be marked as oldMoved newMoved
+       line 6B should be marked as oldMoved newMoved
+       EOF
+       cat >new.txt <<-\EOF &&
+         line 1A should be marked as oldMoved newMovedAlternate
+         line 1B should be marked as oldMoved newMovedAlternate
+       unchanged
+         line 3A should be marked as oldMovedAlternate newMoved
+         line 3B should be marked as oldMovedAlternate newMoved
+         line 2A should be marked as oldMoved newMovedAlternate
+         line 2B should be marked as oldMoved newMovedAlternate
+       unchanged
+         line 6A should be marked as oldMoved newMoved
+         line 6B should be marked as oldMoved newMoved
+           line 4A should be marked as oldMoved newMovedAlternate
+           line 4B should be marked as oldMoved newMovedAlternate
+         line 5A should be marked as oldMovedAlternate newMoved
+         line 5B should be marked as oldMovedAlternate newMoved
+       EOF
+       test_expect_code 1 git diff --no-index --color --color-moved=zebra \
+                --color-moved-ws=allow-indentation-change \
+                old.txt new.txt >output &&
+       grep -v index output | test_decode_color >actual &&
+       cat >expected <<-\EOF &&
+       <BOLD>diff --git a/old.txt b/new.txt<RESET>
+       <BOLD>--- a/old.txt<RESET>
+       <BOLD>+++ b/new.txt<RESET>
+       <CYAN>@@ -1,14 +1,14 @@<RESET>
+       <BOLD;MAGENTA>-line 1A should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;MAGENTA>-line 1B should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 1A should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 1B should be marked as oldMoved newMovedAlternate<RESET>
+        unchanged<RESET>
+       <BOLD;MAGENTA>-line 2A should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;MAGENTA>-line 2B should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;BLUE>-line 3A should be marked as oldMovedAlternate newMoved<RESET>
+       <BOLD;BLUE>-line 3B should be marked as oldMovedAlternate newMoved<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 3A should be marked as oldMovedAlternate newMoved<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 3B should be marked as oldMovedAlternate newMoved<RESET>
+       <BOLD;YELLOW>+<RESET><BOLD;YELLOW>  line 2A should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;YELLOW>+<RESET><BOLD;YELLOW>  line 2B should be marked as oldMoved newMovedAlternate<RESET>
+        unchanged<RESET>
+       <BOLD;MAGENTA>-line 4A should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;MAGENTA>-line 4B should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;BLUE>-line 5A should be marked as oldMovedAlternate newMoved<RESET>
+       <BOLD;BLUE>-line 5B should be marked as oldMovedAlternate newMoved<RESET>
+       <BOLD;MAGENTA>-line 6A should be marked as oldMoved newMoved<RESET>
+       <BOLD;MAGENTA>-line 6B should be marked as oldMoved newMoved<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 6A should be marked as oldMoved newMoved<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 6B should be marked as oldMoved newMoved<RESET>
+       <BOLD;YELLOW>+<RESET><BOLD;YELLOW>    line 4A should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;YELLOW>+<RESET><BOLD;YELLOW>    line 4B should be marked as oldMoved newMovedAlternate<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 5A should be marked as oldMovedAlternate newMoved<RESET>
+       <BOLD;CYAN>+<RESET><BOLD;CYAN>  line 5B should be marked as oldMovedAlternate newMoved<RESET>
+       EOF
+       test_cmp expected actual
+'
+
 test_expect_success 'cmd option assumes configured colored-moved' '
        test_config color.diff.oldMoved "magenta" &&
        test_config color.diff.newMoved "cyan" &&