Skip to content

Commit 760486a

Browse files
avargitster
authored andcommitted
{upload,receive}-pack tests: add --advertise-refs tests
The --advertise-refs option had no explicit tests of its own, only other http tests that would fail at a distance if it it was broken. Let's test its behavior explicitly. Signed-off-by: Ævar Arnfjörð Bjarmason <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 5befe8a commit 760486a

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed

t/t5555-http-smart-common.sh

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
#!/bin/sh
2+
3+
test_description='test functionality common to smart fetch & push'
4+
5+
. ./test-lib.sh
6+
7+
test_expect_success 'setup' '
8+
test_commit --no-tag initial
9+
'
10+
11+
test_expect_success 'git upload-pack --advertise-refs' '
12+
cat >expect <<-EOF &&
13+
$(git rev-parse HEAD) HEAD
14+
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
15+
0000
16+
EOF
17+
18+
# We only care about GIT_PROTOCOL, not GIT_TEST_PROTOCOL_VERSION
19+
sane_unset GIT_PROTOCOL &&
20+
GIT_TEST_PROTOCOL_VERSION=2 \
21+
git upload-pack --advertise-refs . >out 2>err &&
22+
23+
test-tool pkt-line unpack <out >actual &&
24+
test_must_be_empty err &&
25+
test_cmp actual expect &&
26+
27+
# The --advertise-refs alias works
28+
git upload-pack --advertise-refs . >out 2>err &&
29+
30+
test-tool pkt-line unpack <out >actual &&
31+
test_must_be_empty err &&
32+
test_cmp actual expect
33+
'
34+
35+
test_expect_success 'git upload-pack --advertise-refs: v0' '
36+
# With no specified protocol
37+
cat >expect <<-EOF &&
38+
$(git rev-parse HEAD) HEAD
39+
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
40+
0000
41+
EOF
42+
43+
git upload-pack --advertise-refs . >out 2>err &&
44+
test-tool pkt-line unpack <out >actual &&
45+
test_must_be_empty err &&
46+
test_cmp actual expect &&
47+
48+
# With explicit v0
49+
GIT_PROTOCOL=version=0 \
50+
git upload-pack --advertise-refs . >out 2>err &&
51+
test-tool pkt-line unpack <out >actual 2>err &&
52+
test_must_be_empty err &&
53+
test_cmp actual expect
54+
55+
'
56+
57+
test_expect_success 'git receive-pack --advertise-refs: v0' '
58+
# With no specified protocol
59+
cat >expect <<-EOF &&
60+
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
61+
0000
62+
EOF
63+
64+
git receive-pack --advertise-refs . >out 2>err &&
65+
test-tool pkt-line unpack <out >actual &&
66+
test_must_be_empty err &&
67+
test_cmp actual expect &&
68+
69+
# With explicit v0
70+
GIT_PROTOCOL=version=0 \
71+
git receive-pack --advertise-refs . >out 2>err &&
72+
test-tool pkt-line unpack <out >actual 2>err &&
73+
test_must_be_empty err &&
74+
test_cmp actual expect
75+
76+
'
77+
78+
test_expect_success 'git upload-pack --advertise-refs: v1' '
79+
# With no specified protocol
80+
cat >expect <<-EOF &&
81+
version 1
82+
$(git rev-parse HEAD) HEAD
83+
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
84+
0000
85+
EOF
86+
87+
GIT_PROTOCOL=version=1 \
88+
git upload-pack --advertise-refs . >out &&
89+
90+
test-tool pkt-line unpack <out >actual 2>err &&
91+
test_must_be_empty err &&
92+
test_cmp actual expect
93+
'
94+
95+
test_expect_success 'git receive-pack --advertise-refs: v1' '
96+
# With no specified protocol
97+
cat >expect <<-EOF &&
98+
version 1
99+
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
100+
0000
101+
EOF
102+
103+
GIT_PROTOCOL=version=1 \
104+
git receive-pack --advertise-refs . >out &&
105+
106+
test-tool pkt-line unpack <out >actual 2>err &&
107+
test_must_be_empty err &&
108+
test_cmp actual expect
109+
'
110+
111+
test_expect_success 'git upload-pack --advertise-refs: v2' '
112+
cat >expect <<-EOF &&
113+
version 2
114+
agent=FAKE
115+
ls-refs=unborn
116+
fetch=shallow wait-for-done
117+
server-option
118+
object-format=$(test_oid algo)
119+
object-info
120+
0000
121+
EOF
122+
123+
GIT_PROTOCOL=version=2 \
124+
GIT_USER_AGENT=FAKE \
125+
git upload-pack --advertise-refs . >out 2>err &&
126+
127+
test-tool pkt-line unpack <out >actual &&
128+
test_must_be_empty err &&
129+
test_cmp actual expect
130+
'
131+
132+
test_expect_success 'git receive-pack --advertise-refs: v2' '
133+
# There is no v2 yet for receive-pack, implicit v0
134+
cat >expect <<-EOF &&
135+
$(git rev-parse HEAD) $(git symbolic-ref HEAD)
136+
0000
137+
EOF
138+
139+
GIT_PROTOCOL=version=2 \
140+
git receive-pack --advertise-refs . >out 2>err &&
141+
142+
test-tool pkt-line unpack <out >actual &&
143+
test_must_be_empty err &&
144+
test_cmp actual expect
145+
'
146+
147+
test_done

0 commit comments

Comments
 (0)