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