diff-highlight: test interleaved parallel lines of history
authorJeff King <peff@peff.net>
Wed, 21 Mar 2018 05:49:26 +0000 (01:49 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 21 Mar 2018 17:24:19 +0000 (10:24 -0700)
The graph test in t9400 covers the case of two simultaneous
branches, but all of the commits during this time are on the
right-hand branch. So we test a graph structure like:

  | |
  | * commit ...
  | |

but we never see the reverse, a commit on the left-hand
branch:

  | |
  * | commit ...
  | |

Since this is an easy thing to get wrong when touching the
graph-matching code, let's cover it by adding one more
commit with its timestamp interleaved with the other branch.

Note that we need to pass --date-order to convince Git to
show it this way (since --topo-order tries to keep lines of
history separate).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/diff-highlight/t/t9400-diff-highlight.sh

index 3f02d31..33bcdbc 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,12 +254,12 @@ 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
 '