3 # Copyright (c) 2005 Jon Seymour
6 test_description
='Test rev-list --merge-order
12 git-commit-tree
"$@" </dev
/null
15 function check_adjacency
21 if ! (git-cat-file commit
$previous |
grep "^parent $next" >/dev
/null
)
33 for c
in root a0 a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 l0 l1 l2 l3 l4 l5
35 echo -n "s/${!c}/$c/;"
40 git-update-cache
--add path0
41 tree
=$
(git-write-tree
)
42 root
=$
(do_commit
$tree 2>/dev
/null
)
43 export GIT_COMMITTER_NAME
=foobar
# to guarantee that the commit is different
44 l0
=$
(do_commit
$tree -p $root)
45 l1
=$
(do_commit
$tree -p $l0)
46 l2
=$
(do_commit
$tree -p $l1)
47 a0
=$
(do_commit
$tree -p $l2)
48 a1
=$
(do_commit
$tree -p $a0)
49 export GIT_COMMITTER_NAME
=foobar2
# to guarantee that the commit is different
50 b1
=$
(do_commit
$tree -p $a0)
51 c1
=$
(do_commit
$tree -p $b1)
52 export GIT_COMMITTER_NAME
=foobar3
# to guarantee that the commit is different
53 b2
=$
(do_commit
$tree -p $b1)
54 b3
=$
(do_commit
$tree -p $b2)
55 c2
=$
(do_commit
$tree -p $c1 -p $b2)
56 c3
=$
(do_commit
$tree -p $c2)
57 a2
=$
(do_commit
$tree -p $a1)
58 a3
=$
(do_commit
$tree -p $a2)
59 b4
=$
(do_commit
$tree -p $b3 -p $a3)
60 a4
=$
(do_commit
$tree -p $a3 -p $b4 -p $c3)
61 l3
=$
(do_commit
$tree -p $a4)
62 l4
=$
(do_commit
$tree -p $l3)
63 l5
=$
(do_commit
$tree -p $l4)
66 git-rev-list
--merge-order --show-breaks HEAD |
sed "$(sed_script)" > actual-merge-order
67 cat > expected-merge-order
<<EOF
89 git-rev-list HEAD | check_adjacency |
sed "$(sed_script)" > actual-default-order
90 normal_adjacency_count
=$
(git-rev-list HEAD | check_adjacency |
grep -c "\^" |
tr -d ' ')
91 merge_order_adjacency_count
=$
(git-rev-list
--merge-order HEAD | check_adjacency |
grep -c "\^" |
tr -d ' ')
93 test_expect_success
'Testing that the rev-list has correct number of entries' '[ $(git-rev-list HEAD | wc -l) -eq 19 ]'
94 test_expect_success
'Testing that --merge-order produces the correct result' 'diff expected-merge-order actual-merge-order'
95 test_expect_success
'Testing that --merge-order produces as many or fewer discontinuities' '[ $merge_order_adjacency_count -le $normal_adjacency_count ]'
97 cat > expected-merge-order-1
<<EOF
114 git-rev-list
--merge-order $a3 $b3 $c3 |
sed "$(sed_script)" > actual-merge-order-1
115 test_expect_success
'Testing multiple heads' 'diff expected-merge-order-1 actual-merge-order-1'
117 cat > expected-merge-order-2
<<EOF
128 git-rev-list
--merge-order $a3 $b3 $c3 ^
$a1 |
sed "$(sed_script)" > actual-merge-order-2
129 test_expect_success
'Testing stop' 'diff expected-merge-order-2 actual-merge-order-2'
131 cat > expected-merge-order-3
<<EOF
145 git-rev-list
--merge-order $a3 $b3 $c3 ^
$l1 |
sed "$(sed_script)" > actual-merge-order-3
146 test_expect_success
'Testing stop in linear epoch' 'diff expected-merge-order-3 actual-merge-order-3'
148 cat > expected-merge-order-4
<<EOF
167 git-rev-list
--merge-order $l5 ^
$l1 |
sed "$(sed_script)" > actual-merge-order-4
168 test_expect_success
'Testing start in linear epoch, stop after non-linear epoch' 'diff expected-merge-order-4 actual-merge-order-4'
170 git-rev-list
--merge-order $l5 $l5 ^
$l1 2>/dev
/null |
sed "$(sed_script)" > actual-merge-order-5
171 test_expect_success
'Testing duplicated start arguments' 'diff expected-merge-order-4 actual-merge-order-5'
173 test_expect_success
'Testing exclusion near merge' 'git-rev-list --merge-order $a4 ^$c3 2>/dev/null'