diff-highlight: test interleaved parallel lines of history

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>
This commit is contained in:
Jeff King 2018-03-21 01:49:26 -04:00 committed by Junio C Hamano
parent e28ae5072f
commit 7ce2f4ca0e

View file

@ -52,15 +52,17 @@ test_strip_patch_header () {
# dh_test_setup_history generates a contrived graph such that we have at least # dh_test_setup_history generates a contrived graph such that we have at least
# 1 nesting (E) and 2 nestings (F). # 1 nesting (E) and 2 nestings (F).
# #
# A master # A---B master
# / # /
# D---E---F branch # D---E---F branch
# #
# git log --all --graph # git log --all --graph
# * commit # * commit
# | A # | B
# | * commit # | * commit
# | | F # | | F
# * | commit
# | | A
# | * commit # | * commit
# |/ # |/
# | E # | E
@ -78,14 +80,20 @@ dh_test_setup_history () {
test_tick && test_tick &&
git commit -a -m "E" && git commit -a -m "E" &&
git checkout master &&
echo file2 >file &&
test_tick &&
git commit -a -m "A" &&
git checkout branch &&
echo file3 >file && echo file3 >file &&
test_tick && test_tick &&
git commit -a -m "F" && git commit -a -m "F" &&
git checkout master && git checkout master &&
echo file2 >file && echo file3 >file &&
test_tick && test_tick &&
git commit -a -m "A" git commit -a -m "B"
} }
left_trim () { 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' ' test_expect_success 'diff-highlight works with the --graph option' '
dh_test_setup_history && 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 graph elements so we can do a diff
# trim leading space because our trim_graph is not perfect # 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 && "$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 && "$DIFF_HIGHLIGHT" | trim_graph | left_trim >graph.act &&
test_cmp graph.exp graph.act test_cmp graph.exp graph.act
' '