Merge branch 'bw/protocol-v2'
[gitweb.git] / contrib / diff-highlight / t / t9400-diff-highlight.sh
index 3f02d314673de54ca2d1d86dc9b3fbb90730a9ba..f6f5195d00f6ca01b0751fc1c1b58055f0ef25ee 100755 (executable)
@@ -52,15 +52,17 @@ test_strip_patch_header () {
 # dh_test_setup_history generates a contrived graph such that we have at least
 # 1 nesting (E) and 2 nestings (F).
 #
-#        A master
+#        A---B master
 #       /
 #      D---E---F branch
 #
 #      git log --all --graph
 #      * commit
-#      |    A
+#      |    B
 #      | * commit
 #      | |    F
+#      * | commit
+#      | |    A
 #      | * commit
 #      |/
 #      |    E
@@ -78,14 +80,20 @@ dh_test_setup_history () {
        test_tick &&
        git commit -a -m "E" &&
 
+       git checkout master &&
+       echo file2 >file &&
+       test_tick &&
+       git commit -a -m "A" &&
+
+       git checkout branch &&
        echo file3 >file &&
        test_tick &&
        git commit -a -m "F" &&
 
        git checkout master &&
-       echo file2 >file &&
+       echo file3 >file &&
        test_tick &&
-       git commit -a -m "A"
+       git commit -a -m "B"
 }
 
 left_trim () {
@@ -246,16 +254,25 @@ test_expect_failure 'diff-highlight treats combining code points as a unit' '
 test_expect_success 'diff-highlight works with the --graph option' '
        dh_test_setup_history &&
 
-       # topo-order so that the order of the commits is the same as with --graph
+       # date-order so that the commits are interleaved for both
        # trim graph elements so we can do a diff
        # trim leading space because our trim_graph is not perfect
-       git log --branches -p --topo-order |
+       git log --branches -p --date-order |
                "$DIFF_HIGHLIGHT" | left_trim >graph.exp &&
-       git log --branches -p --graph |
+       git log --branches -p --date-order --graph |
                "$DIFF_HIGHLIGHT" | trim_graph | left_trim >graph.act &&
        test_cmp graph.exp graph.act
 '
 
+# Just reuse the previous graph test, but with --color.  Our trimming
+# doesn't know about color, so just sanity check that something got
+# highlighted.
+test_expect_success 'diff-highlight works with color graph' '
+       git log --branches -p --date-order --graph --color |
+               "$DIFF_HIGHLIGHT" | trim_graph | left_trim >graph &&
+       grep "\[7m" graph
+'
+
 # Most combined diffs won't meet diff-highlight's line-number filter. So we
 # create one here where one side drops a line and the other modifies it. That
 # should result in a diff like:
@@ -293,4 +310,32 @@ test_expect_success 'diff-highlight ignores combined diffs' '
        test_cmp expect actual
 '
 
+test_expect_success 'diff-highlight handles --graph with leading dash' '
+       cat >file <<-\EOF &&
+       before
+       the old line
+       -leading dash
+       EOF
+       git add file &&
+       git commit -m before &&
+
+       sed s/old/new/ <file >file.tmp &&
+       mv file.tmp file &&
+       git add file &&
+       git commit -m after &&
+
+       cat >expect <<-EOF &&
+       --- a/file
+       +++ b/file
+       @@ -1,3 +1,3 @@
+        before
+       -the ${CW}old${CR} line
+       +the ${CW}new${CR} line
+        -leading dash
+       EOF
+       git log --graph -p -1 | "$DIFF_HIGHLIGHT" >actual.raw &&
+       trim_graph <actual.raw | sed -n "/^---/,\$p" >actual &&
+       test_cmp expect actual
+'
+
 test_done