]>
Commit | Line | Data |
---|---|---|
15d3af5e | 1 | test_expect_success "setup proc-receive hook (unknown version, $PROTOCOL/porcelain)" ' |
c39176b1 | 2 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
15d3af5e JX |
3 | printf >&2 "# proc-receive hook\n" |
4 | test-tool proc-receive -v --version 2 | |
5 | EOF | |
6 | ' | |
7 | ||
a9568dba JS |
8 | # Refs of upstream : main(A) |
9 | # Refs of workbench: main(A) tags/v123 | |
10 | # git push : refs/for/main/topic(A) | |
15d3af5e JX |
11 | test_expect_success "proc-receive: bad protocol (unknown version, $PROTOCOL/porcelain)" ' |
12 | test_must_fail git -C workbench push --porcelain origin \ | |
a9568dba | 13 | HEAD:refs/for/main/topic \ |
8388a64c JX |
14 | >out-$test_count 2>&1 && |
15 | make_user_friendly_and_stable_output <out-$test_count >actual && | |
15d3af5e JX |
16 | |
17 | # Check status report for git-push | |
18 | sed -n \ | |
19 | -e "/^To / { p; n; p; n; p; }" \ | |
20 | <actual >actual-report && | |
21 | cat >expect <<-EOF && | |
22 | To <URL/of/upstream.git> | |
2bafb3d7 | 23 | ! HEAD:refs/for/main/topic [remote rejected] (fail to run proc-receive hook) |
15d3af5e JX |
24 | Done |
25 | EOF | |
26 | test_cmp expect actual-report && | |
27 | ||
28 | # Check error message from "receive-pack", but ignore unstable fatal error | |
29 | # message ("remote: fatal: the remote end hung up unexpectedly") which | |
30 | # is different from the remote HTTP server with different locale settings. | |
31 | grep "^remote: error:" <actual >actual-error && | |
2bafb3d7 JX |
32 | format_and_save_expect <<-EOF && |
33 | > remote: error: proc-receive version "2" is not supported Z | |
15d3af5e JX |
34 | EOF |
35 | test_cmp expect actual-error && | |
36 | ||
822ee894 | 37 | test_cmp_refs -C "$upstream" <<-EOF |
a9568dba | 38 | <COMMIT-A> refs/heads/main |
15d3af5e | 39 | EOF |
15d3af5e JX |
40 | ' |
41 | ||
f65003b4 | 42 | test_expect_success "setup proc-receive hook (hook --die-read-version, $PROTOCOL/porcelain)" ' |
c39176b1 | 43 | test_hook -C "$upstream" --clobber proc-receive <<-EOF |
f65003b4 JX |
44 | printf >&2 "# proc-receive hook\n" |
45 | test-tool proc-receive -v --die-read-version | |
46 | EOF | |
47 | ' | |
48 | ||
49 | # Refs of upstream : main(A) | |
50 | # Refs of workbench: main(A) tags/v123 | |
51 | # git push : refs/for/main/topic(A) | |
52 | test_expect_success "proc-receive: bad protocol (hook --die-read-version, $PROTOCOL/porcelain)" ' | |
53 | test_must_fail git -C workbench push --porcelain origin \ | |
54 | HEAD:refs/for/main/topic \ | |
8388a64c | 55 | >out-$test_count 2>&1 && |
f65003b4 JX |
56 | filter_out_user_friendly_and_stable_output \ |
57 | -e "/^To / { p; n; p; n; p; }" \ | |
8388a64c | 58 | <out-$test_count >actual && |
f65003b4 JX |
59 | cat >expect <<-EOF && |
60 | To <URL/of/upstream.git> | |
2bafb3d7 | 61 | ! HEAD:refs/for/main/topic [remote rejected] (fail to run proc-receive hook) |
f65003b4 JX |
62 | Done |
63 | EOF | |
64 | test_cmp expect actual && | |
8388a64c JX |
65 | grep "remote: fatal: die with the --die-read-version option" out-$test_count && |
66 | grep "remote: error: fail to negotiate version with proc-receive hook" out-$test_count && | |
f65003b4 | 67 | |
822ee894 | 68 | test_cmp_refs -C "$upstream" <<-EOF |
f65003b4 JX |
69 | <COMMIT-A> refs/heads/main |
70 | EOF | |
f65003b4 JX |
71 | ' |
72 | ||
73 | test_expect_success "setup proc-receive hook (hook --die-write-version, $PROTOCOL/porcelain)" ' | |
c39176b1 | 74 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
f65003b4 JX |
75 | printf >&2 "# proc-receive hook\n" |
76 | test-tool proc-receive -v --die-write-version | |
77 | EOF | |
78 | ' | |
79 | ||
80 | # Refs of upstream : main(A) | |
81 | # Refs of workbench: main(A) tags/v123 | |
82 | # git push : refs/for/main/topic(A) | |
83 | test_expect_success "proc-receive: bad protocol (hook --die-write-version, $PROTOCOL/porcelain)" ' | |
84 | test_must_fail git -C workbench push --porcelain origin \ | |
85 | HEAD:refs/for/main/topic \ | |
8388a64c | 86 | >out-$test_count 2>&1 && |
f65003b4 JX |
87 | filter_out_user_friendly_and_stable_output \ |
88 | -e "/^To / { p; n; p; n; p; }" \ | |
8388a64c | 89 | <out-$test_count >actual && |
f65003b4 JX |
90 | cat >expect <<-EOF && |
91 | To <URL/of/upstream.git> | |
2bafb3d7 | 92 | ! HEAD:refs/for/main/topic [remote rejected] (fail to run proc-receive hook) |
f65003b4 JX |
93 | Done |
94 | EOF | |
95 | test_cmp expect actual && | |
8388a64c JX |
96 | grep "remote: fatal: die with the --die-write-version option" out-$test_count && |
97 | grep "remote: error: fail to negotiate version with proc-receive hook" out-$test_count && | |
f65003b4 | 98 | |
822ee894 | 99 | test_cmp_refs -C "$upstream" <<-EOF |
f65003b4 JX |
100 | <COMMIT-A> refs/heads/main |
101 | EOF | |
f65003b4 JX |
102 | ' |
103 | ||
104 | test_expect_success "setup proc-receive hook (hook --die-read-commands, $PROTOCOL/porcelain)" ' | |
c39176b1 | 105 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
f65003b4 JX |
106 | printf >&2 "# proc-receive hook\n" |
107 | test-tool proc-receive -v --die-read-commands | |
108 | EOF | |
109 | ' | |
110 | ||
111 | # Refs of upstream : main(A) | |
112 | # Refs of workbench: main(A) tags/v123 | |
113 | # git push : refs/for/main/topic(A) | |
114 | test_expect_success "proc-receive: bad protocol (hook --die-read-commands, $PROTOCOL/porcelain)" ' | |
115 | test_must_fail git -C workbench push --porcelain origin \ | |
116 | HEAD:refs/for/main/topic \ | |
8388a64c | 117 | >out-$test_count 2>&1 && |
f65003b4 JX |
118 | filter_out_user_friendly_and_stable_output \ |
119 | -e "/^To / { p; n; p; n; p; }" \ | |
8388a64c | 120 | <out-$test_count >actual && |
f65003b4 JX |
121 | cat >expect <<-EOF && |
122 | To <URL/of/upstream.git> | |
2bafb3d7 | 123 | ! HEAD:refs/for/main/topic [remote rejected] (fail to run proc-receive hook) |
f65003b4 JX |
124 | Done |
125 | EOF | |
126 | test_cmp expect actual && | |
8388a64c | 127 | grep "remote: fatal: die with the --die-read-commands option" out-$test_count && |
f65003b4 | 128 | |
822ee894 | 129 | test_cmp_refs -C "$upstream" <<-EOF |
f65003b4 JX |
130 | <COMMIT-A> refs/heads/main |
131 | EOF | |
f65003b4 JX |
132 | ' |
133 | ||
134 | test_expect_success "setup proc-receive hook (hook --die-read-push-options, $PROTOCOL/porcelain)" ' | |
c39176b1 | 135 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
f65003b4 JX |
136 | printf >&2 "# proc-receive hook\n" |
137 | test-tool proc-receive -v --die-read-push-options | |
138 | EOF | |
139 | ' | |
140 | ||
141 | # Refs of upstream : main(A) | |
142 | # Refs of workbench: main(A) tags/v123 | |
143 | # git push : refs/for/main/topic(A) | |
144 | test_expect_success "proc-receive: bad protocol (hook --die-read-push-options, $PROTOCOL/porcelain)" ' | |
145 | git -C "$upstream" config receive.advertisePushOptions true && | |
146 | test_must_fail git -C workbench push --porcelain origin \ | |
147 | -o reviewers=user1,user2 \ | |
148 | HEAD:refs/for/main/topic \ | |
8388a64c | 149 | >out-$test_count 2>&1 && |
f65003b4 JX |
150 | filter_out_user_friendly_and_stable_output \ |
151 | -e "/^To / { p; n; p; n; p; }" \ | |
8388a64c | 152 | <out-$test_count >actual && |
f65003b4 JX |
153 | cat >expect <<-EOF && |
154 | To <URL/of/upstream.git> | |
2bafb3d7 | 155 | ! HEAD:refs/for/main/topic [remote rejected] (fail to run proc-receive hook) |
f65003b4 JX |
156 | Done |
157 | EOF | |
158 | test_cmp expect actual && | |
8388a64c | 159 | grep "remote: fatal: die with the --die-read-push-options option" out-$test_count && |
f65003b4 | 160 | |
822ee894 | 161 | test_cmp_refs -C "$upstream" <<-EOF |
f65003b4 JX |
162 | <COMMIT-A> refs/heads/main |
163 | EOF | |
f65003b4 JX |
164 | ' |
165 | ||
166 | test_expect_success "setup proc-receive hook (hook --die-write-report, $PROTOCOL/porcelain)" ' | |
c39176b1 | 167 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
f65003b4 JX |
168 | printf >&2 "# proc-receive hook\n" |
169 | test-tool proc-receive -v --die-write-report | |
170 | EOF | |
171 | ' | |
172 | ||
173 | # Refs of upstream : main(A) | |
174 | # Refs of workbench: main(A) tags/v123 | |
175 | # git push : refs/for/main/topic(A) | |
176 | test_expect_success "proc-receive: bad protocol (hook --die-write-report, $PROTOCOL/porcelain)" ' | |
177 | test_must_fail git -C workbench push --porcelain origin \ | |
178 | HEAD:refs/for/main/topic \ | |
8388a64c | 179 | >out-$test_count 2>&1 && |
f65003b4 JX |
180 | filter_out_user_friendly_and_stable_output \ |
181 | -e "/^To / { p; n; p; n; p; }" \ | |
8388a64c | 182 | <out-$test_count >actual && |
f65003b4 JX |
183 | cat >expect <<-EOF && |
184 | To <URL/of/upstream.git> | |
2bafb3d7 | 185 | ! HEAD:refs/for/main/topic [remote rejected] (fail to run proc-receive hook) |
f65003b4 JX |
186 | Done |
187 | EOF | |
188 | test_cmp expect actual && | |
8388a64c | 189 | grep "remote: fatal: die with the --die-write-report option" out-$test_count && |
f65003b4 | 190 | |
822ee894 | 191 | test_cmp_refs -C "$upstream" <<-EOF |
f65003b4 JX |
192 | <COMMIT-A> refs/heads/main |
193 | EOF | |
f65003b4 JX |
194 | ' |
195 | ||
15d3af5e | 196 | test_expect_success "setup proc-receive hook (no report, $PROTOCOL/porcelain)" ' |
c39176b1 | 197 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
15d3af5e JX |
198 | printf >&2 "# proc-receive hook\n" |
199 | test-tool proc-receive -v | |
200 | EOF | |
201 | ' | |
202 | ||
a9568dba JS |
203 | # Refs of upstream : main(A) |
204 | # Refs of workbench: main(A) tags/v123 | |
205 | # git push : next(A) refs/for/main/topic(A) | |
15d3af5e JX |
206 | test_expect_success "proc-receive: bad protocol (no report, $PROTOCOL/porcelain)" ' |
207 | test_must_fail git -C workbench push --porcelain origin \ | |
208 | HEAD:refs/heads/next \ | |
8388a64c JX |
209 | HEAD:refs/for/main/topic >out-$test_count 2>&1 && |
210 | make_user_friendly_and_stable_output <out-$test_count >actual && | |
2bafb3d7 JX |
211 | format_and_save_expect <<-EOF && |
212 | > remote: # pre-receive hook Z | |
213 | > remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next Z | |
214 | > remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z | |
215 | > remote: # proc-receive hook Z | |
216 | > remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z | |
217 | > remote: # post-receive hook Z | |
218 | > remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next Z | |
219 | > To <URL/of/upstream.git> | |
220 | > * HEAD:refs/heads/next [new branch] | |
221 | > ! HEAD:refs/for/main/topic [remote rejected] (proc-receive failed to report status) | |
222 | > Done | |
15d3af5e JX |
223 | EOF |
224 | test_cmp expect actual && | |
f65003b4 | 225 | |
822ee894 | 226 | test_cmp_refs -C "$upstream" <<-EOF |
a9568dba | 227 | <COMMIT-A> refs/heads/main |
15d3af5e JX |
228 | <COMMIT-A> refs/heads/next |
229 | EOF | |
15d3af5e JX |
230 | ' |
231 | ||
a9568dba JS |
232 | # Refs of upstream : main(A) next(A) |
233 | # Refs of workbench: main(A) tags/v123 | |
15d3af5e JX |
234 | test_expect_success "cleanup ($PROTOCOL/porcelain)" ' |
235 | git -C "$upstream" update-ref -d refs/heads/next | |
15d3af5e JX |
236 | ' |
237 | ||
238 | test_expect_success "setup proc-receive hook (no ref, $PROTOCOL/porcelain)" ' | |
c39176b1 | 239 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
15d3af5e JX |
240 | printf >&2 "# proc-receive hook\n" |
241 | test-tool proc-receive -v \ | |
242 | -r "ok" | |
243 | EOF | |
244 | ' | |
245 | ||
a9568dba JS |
246 | # Refs of upstream : main(A) |
247 | # Refs of workbench: main(A) tags/v123 | |
248 | # git push : refs/for/main/topic | |
15d3af5e JX |
249 | test_expect_success "proc-receive: bad protocol (no ref, $PROTOCOL/porcelain)" ' |
250 | test_must_fail git -C workbench push --porcelain origin \ | |
a9568dba | 251 | HEAD:refs/for/main/topic\ |
8388a64c JX |
252 | >out-$test_count 2>&1 && |
253 | make_user_friendly_and_stable_output <out-$test_count >actual && | |
2bafb3d7 JX |
254 | format_and_save_expect <<-EOF && |
255 | > remote: # pre-receive hook Z | |
256 | > remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z | |
257 | > remote: # proc-receive hook Z | |
258 | > remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z | |
259 | > remote: proc-receive> ok Z | |
260 | > remote: error: proc-receive reported incomplete status line: "ok" Z | |
261 | > To <URL/of/upstream.git> | |
262 | > ! HEAD:refs/for/main/topic [remote rejected] (proc-receive failed to report status) | |
263 | > Done | |
15d3af5e JX |
264 | EOF |
265 | test_cmp expect actual && | |
f65003b4 | 266 | |
822ee894 | 267 | test_cmp_refs -C "$upstream" <<-EOF |
a9568dba | 268 | <COMMIT-A> refs/heads/main |
15d3af5e | 269 | EOF |
15d3af5e JX |
270 | ' |
271 | ||
272 | test_expect_success "setup proc-receive hook (unknown status, $PROTOCOL/porcelain)" ' | |
c39176b1 | 273 | test_hook -C "$upstream" --clobber proc-receive <<-\EOF |
15d3af5e JX |
274 | printf >&2 "# proc-receive hook\n" |
275 | test-tool proc-receive -v \ | |
a9568dba | 276 | -r "xx refs/for/main/topic" |
15d3af5e JX |
277 | EOF |
278 | ' | |
279 | ||
a9568dba JS |
280 | # Refs of upstream : main(A) |
281 | # Refs of workbench: main(A) tags/v123 | |
282 | # git push : refs/for/main/topic | |
15d3af5e JX |
283 | test_expect_success "proc-receive: bad protocol (unknown status, $PROTOCOL/porcelain)" ' |
284 | test_must_fail git -C workbench push --porcelain origin \ | |
a9568dba | 285 | HEAD:refs/for/main/topic \ |
8388a64c JX |
286 | >out-$test_count 2>&1 && |
287 | make_user_friendly_and_stable_output <out-$test_count >actual && | |
2bafb3d7 JX |
288 | format_and_save_expect <<-EOF && |
289 | > remote: # pre-receive hook Z | |
290 | > remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z | |
291 | > remote: # proc-receive hook Z | |
292 | > remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z | |
293 | > remote: proc-receive> xx refs/for/main/topic Z | |
294 | > remote: error: proc-receive reported bad status "xx" on ref "refs/for/main/topic" Z | |
295 | > To <URL/of/upstream.git> | |
296 | > ! HEAD:refs/for/main/topic [remote rejected] (proc-receive failed to report status) | |
297 | > Done | |
15d3af5e JX |
298 | EOF |
299 | test_cmp expect actual && | |
f65003b4 | 300 | |
822ee894 | 301 | test_cmp_refs -C "$upstream" <<-EOF |
a9568dba | 302 | <COMMIT-A> refs/heads/main |
15d3af5e | 303 | EOF |
15d3af5e | 304 | ' |