]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5503-tagfollow.sh
path.c: don't call the match function without value in trie_find()
[thirdparty/git.git] / t / t5503-tagfollow.sh
CommitLineData
cf7f929a
SP
1#!/bin/sh
2
3test_description='test automatic tag following'
4
5. ./test-lib.sh
6
7# End state of the repository:
8#
9# T - tag1 S - tag2
10# / /
11# L - A ------ O ------ B
12# \ \ \
13# \ C - origin/cat \
14# origin/master master
15
2ad23273 16test_expect_success setup '
cf7f929a
SP
17 test_tick &&
18 echo ichi >file &&
19 git add file &&
20 git commit -m L &&
21 L=$(git rev-parse --verify HEAD) &&
22
23 (
24 mkdir cloned &&
25 cd cloned &&
26 git init-db &&
27 git remote add -f origin ..
28 ) &&
29
30 test_tick &&
31 echo A >file &&
32 git add file &&
33 git commit -m A &&
34 A=$(git rev-parse --verify HEAD)
35'
36
37U=UPLOAD_LOG
2ad23273 38UPATH="$(pwd)/$U"
cf7f929a 39
2ad23273 40test_expect_success 'setup expect' '
cf7f929a 41cat - <<EOF >expect
cf7f929a 42want $A
cf7f929a 43EOF
49f32489
ÆAB
44'
45
97a83fa8 46get_needs () {
2ad23273 47 test -s "$1" &&
97a83fa8
JK
48 perl -alne '
49 next unless $F[1] eq "upload-pack<";
15ff91aa 50 next unless $F[2] eq "want";
97a83fa8 51 print $F[2], " ", $F[3];
2ad23273 52 ' "$1"
97a83fa8
JK
53}
54
2ad23273 55test_expect_success 'fetch A (new commit : 1 connection)' '
2dec68cf 56 rm -f $U &&
cf7f929a
SP
57 (
58 cd cloned &&
2ad23273 59 GIT_TRACE_PACKET=$UPATH git fetch &&
cf7f929a
SP
60 test $A = $(git rev-parse --verify origin/master)
61 ) &&
97a83fa8 62 get_needs $U >actual &&
3af82863 63 test_cmp expect actual
cf7f929a
SP
64'
65
2ad23273 66test_expect_success "create tag T on A, create C on branch cat" '
cf7f929a
SP
67 git tag -a -m tag1 tag1 $A &&
68 T=$(git rev-parse --verify tag1) &&
69
70 git checkout -b cat &&
71 echo C >file &&
72 git add file &&
73 git commit -m C &&
74 C=$(git rev-parse --verify HEAD) &&
75 git checkout master
76'
77
2ad23273 78test_expect_success 'setup expect' '
cf7f929a 79cat - <<EOF >expect
cf7f929a
SP
80want $C
81want $T
cf7f929a 82EOF
49f32489
ÆAB
83'
84
2ad23273 85test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
2dec68cf 86 rm -f $U &&
cf7f929a
SP
87 (
88 cd cloned &&
2ad23273 89 GIT_TRACE_PACKET=$UPATH git fetch &&
cf7f929a
SP
90 test $C = $(git rev-parse --verify origin/cat) &&
91 test $T = $(git rev-parse --verify tag1) &&
92 test $A = $(git rev-parse --verify tag1^0)
93 ) &&
97a83fa8 94 get_needs $U >actual &&
3af82863 95 test_cmp expect actual
cf7f929a
SP
96'
97
2ad23273 98test_expect_success "create commits O, B, tag S on B" '
cf7f929a
SP
99 test_tick &&
100 echo O >file &&
101 git add file &&
102 git commit -m O &&
103
104 test_tick &&
105 echo B >file &&
106 git add file &&
107 git commit -m B &&
108 B=$(git rev-parse --verify HEAD) &&
109
110 git tag -a -m tag2 tag2 $B &&
111 S=$(git rev-parse --verify tag2)
112'
113
2ad23273 114test_expect_success 'setup expect' '
cf7f929a 115cat - <<EOF >expect
cf7f929a
SP
116want $B
117want $S
cf7f929a 118EOF
49f32489
ÆAB
119'
120
2ad23273 121test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
2dec68cf 122 rm -f $U &&
cf7f929a
SP
123 (
124 cd cloned &&
2ad23273 125 GIT_TRACE_PACKET=$UPATH git fetch &&
cf7f929a
SP
126 test $B = $(git rev-parse --verify origin/master) &&
127 test $B = $(git rev-parse --verify tag2^0) &&
128 test $S = $(git rev-parse --verify tag2)
129 ) &&
97a83fa8 130 get_needs $U >actual &&
3af82863 131 test_cmp expect actual
cf7f929a
SP
132'
133
2ad23273 134test_expect_success 'setup expect' '
41fa7d2e 135cat - <<EOF >expect
41fa7d2e
SP
136want $B
137want $S
41fa7d2e 138EOF
49f32489
ÆAB
139'
140
2ad23273 141test_expect_success 'new clone fetch master and tags' '
a6a4a88a
JK
142 test_might_fail git branch -D cat &&
143 rm -f $U &&
41fa7d2e
SP
144 (
145 mkdir clone2 &&
146 cd clone2 &&
147 git init &&
148 git remote add origin .. &&
2ad23273 149 GIT_TRACE_PACKET=$UPATH git fetch &&
41fa7d2e
SP
150 test $B = $(git rev-parse --verify origin/master) &&
151 test $S = $(git rev-parse --verify tag2) &&
152 test $B = $(git rev-parse --verify tag2^0) &&
153 test $T = $(git rev-parse --verify tag1) &&
154 test $A = $(git rev-parse --verify tag1^0)
155 ) &&
97a83fa8 156 get_needs $U >actual &&
3af82863 157 test_cmp expect actual
41fa7d2e
SP
158'
159
cf7f929a 160test_done