]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5411/test-0033-report-with-options--porcelain.sh
Merge branch 'ma/doc-markup-fix'
[thirdparty/git.git] / t / t5411 / test-0033-report-with-options--porcelain.sh
CommitLineData
15d3af5e
JX
1test_expect_success "setup proc-receive hook (option without matching ok, $PROTOCOL/porcelain)" '
2 write_script "$upstream/hooks/proc-receive" <<-EOF
3 printf >&2 "# proc-receive hook\n"
4 test-tool proc-receive -v \
5 -r "option refname refs/pull/123/head" \
6 -r "option old-oid $B"
7 EOF
8'
9
8f0a2645
JS
10# Refs of upstream : main(A)
11# Refs of workbench: main(A) tags/v123
12# git push : refs/for/next/topic(A) refs/for/a/b/c/topic(A) refs/for/main/topic(A)
15d3af5e
JX
13test_expect_success "proc-receive: report option without matching ok ($PROTOCOL/porcelain)" '
14 test_must_fail git -C workbench push --porcelain origin \
8f0a2645 15 HEAD:refs/for/main/topic \
8388a64c
JX
16 >out-$test_count 2>&1 &&
17 make_user_friendly_and_stable_output <out-$test_count >actual &&
15d3af5e
JX
18 cat >expect <<-EOF &&
19 remote: # pre-receive hook
8f0a2645 20 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e 21 remote: # proc-receive hook
8f0a2645 22 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e
JX
23 remote: proc-receive> option refname refs/pull/123/head
24 remote: proc-receive> option old-oid <COMMIT-B>
25 remote: error: proc-receive reported "option" without a matching "ok/ng" directive
26 To <URL/of/upstream.git>
8f0a2645 27 ! HEAD:refs/for/main/topic [remote rejected] (proc-receive failed to report status)
15d3af5e
JX
28 Done
29 EOF
30 test_cmp expect actual
31'
32
33test_expect_success "setup proc-receive hook (option refname, $PROTOCOL/porcelain)" '
34 write_script "$upstream/hooks/proc-receive" <<-EOF
35 printf >&2 "# proc-receive hook\n"
36 test-tool proc-receive -v \
8f0a2645 37 -r "ok refs/for/main/topic" \
15d3af5e
JX
38 -r "option refname refs/pull/123/head"
39 EOF
40'
41
8f0a2645
JS
42# Refs of upstream : main(A)
43# Refs of workbench: main(A) tags/v123
44# git push : refs/for/next/topic(A) refs/for/a/b/c/topic(A) refs/for/main/topic(A)
15d3af5e
JX
45test_expect_success "proc-receive: report option refname ($PROTOCOL/porcelain)" '
46 git -C workbench push --porcelain origin \
8f0a2645 47 HEAD:refs/for/main/topic \
15d3af5e
JX
48 >out 2>&1 &&
49 make_user_friendly_and_stable_output <out >actual &&
50 cat >expect <<-EOF &&
51 remote: # pre-receive hook
8f0a2645 52 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e 53 remote: # proc-receive hook
8f0a2645
JS
54 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
55 remote: proc-receive> ok refs/for/main/topic
15d3af5e
JX
56 remote: proc-receive> option refname refs/pull/123/head
57 remote: # post-receive hook
195d6eae 58 remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
15d3af5e 59 To <URL/of/upstream.git>
63518a57 60 * HEAD:refs/pull/123/head [new reference]
15d3af5e
JX
61 Done
62 EOF
63 test_cmp expect actual
64'
65
66test_expect_success "setup proc-receive hook (option refname and forced-update, $PROTOCOL/porcelain)" '
67 write_script "$upstream/hooks/proc-receive" <<-EOF
68 printf >&2 "# proc-receive hook\n"
69 test-tool proc-receive -v \
8f0a2645 70 -r "ok refs/for/main/topic" \
15d3af5e
JX
71 -r "option refname refs/pull/123/head" \
72 -r "option forced-update"
73 EOF
74'
75
8f0a2645
JS
76# Refs of upstream : main(A)
77# Refs of workbench: main(A) tags/v123
78# git push : refs/for/next/topic(A) refs/for/a/b/c/topic(A) refs/for/main/topic(A)
15d3af5e
JX
79test_expect_success "proc-receive: report option refname and forced-update ($PROTOCOL/porcelain)" '
80 git -C workbench push --porcelain origin \
8f0a2645 81 HEAD:refs/for/main/topic \
15d3af5e
JX
82 >out 2>&1 &&
83 make_user_friendly_and_stable_output <out >actual &&
84 cat >expect <<-EOF &&
85 remote: # pre-receive hook
8f0a2645 86 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e 87 remote: # proc-receive hook
8f0a2645
JS
88 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
89 remote: proc-receive> ok refs/for/main/topic
15d3af5e
JX
90 remote: proc-receive> option refname refs/pull/123/head
91 remote: proc-receive> option forced-update
92 remote: # post-receive hook
195d6eae 93 remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
15d3af5e 94 To <URL/of/upstream.git>
63518a57 95 * HEAD:refs/pull/123/head [new reference]
15d3af5e
JX
96 Done
97 EOF
98 test_cmp expect actual
99'
100
101test_expect_success "setup proc-receive hook (option refname and old-oid, $PROTOCOL/porcelain)" '
102 write_script "$upstream/hooks/proc-receive" <<-EOF
103 printf >&2 "# proc-receive hook\n"
104 test-tool proc-receive -v \
8f0a2645 105 -r "ok refs/for/main/topic" \
15d3af5e
JX
106 -r "option refname refs/pull/123/head" \
107 -r "option old-oid $B"
108 EOF
109'
110
8f0a2645
JS
111# Refs of upstream : main(A)
112# Refs of workbench: main(A) tags/v123
113# git push : refs/for/next/topic(A) refs/for/a/b/c/topic(A) refs/for/main/topic(A)
15d3af5e
JX
114test_expect_success "proc-receive: report option refname and old-oid ($PROTOCOL/porcelain)" '
115 git -C workbench push --porcelain origin \
8f0a2645 116 HEAD:refs/for/main/topic \
15d3af5e
JX
117 >out 2>&1 &&
118 make_user_friendly_and_stable_output <out >actual &&
119 cat >expect <<-EOF &&
120 remote: # pre-receive hook
8f0a2645 121 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e 122 remote: # proc-receive hook
8f0a2645
JS
123 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
124 remote: proc-receive> ok refs/for/main/topic
15d3af5e
JX
125 remote: proc-receive> option refname refs/pull/123/head
126 remote: proc-receive> option old-oid <COMMIT-B>
127 remote: # post-receive hook
195d6eae 128 remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/123/head
15d3af5e 129 To <URL/of/upstream.git>
63518a57 130 HEAD:refs/pull/123/head <OID-B>..<OID-A>
15d3af5e
JX
131 Done
132 EOF
133 test_cmp expect actual
134'
135
136test_expect_success "setup proc-receive hook (option old-oid, $PROTOCOL/porcelain)" '
137 write_script "$upstream/hooks/proc-receive" <<-EOF
138 printf >&2 "# proc-receive hook\n"
139 test-tool proc-receive -v \
8f0a2645 140 -r "ok refs/for/main/topic" \
15d3af5e
JX
141 -r "option old-oid $B"
142 EOF
143'
144
8f0a2645
JS
145# Refs of upstream : main(A)
146# Refs of workbench: main(A) tags/v123
147# git push : refs/for/next/topic(A) refs/for/a/b/c/topic(A) refs/for/main/topic(A)
15d3af5e
JX
148test_expect_success "proc-receive: report option old-oid ($PROTOCOL/porcelain)" '
149 git -C workbench push --porcelain origin \
8f0a2645 150 HEAD:refs/for/main/topic \
15d3af5e
JX
151 >out 2>&1 &&
152 make_user_friendly_and_stable_output <out >actual &&
153 cat >expect <<-EOF &&
154 remote: # pre-receive hook
8f0a2645 155 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e 156 remote: # proc-receive hook
8f0a2645
JS
157 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
158 remote: proc-receive> ok refs/for/main/topic
15d3af5e
JX
159 remote: proc-receive> option old-oid <COMMIT-B>
160 remote: # post-receive hook
8f0a2645 161 remote: post-receive< <COMMIT-B> <COMMIT-A> refs/for/main/topic
15d3af5e 162 To <URL/of/upstream.git>
8f0a2645 163 HEAD:refs/for/main/topic <OID-B>..<OID-A>
15d3af5e
JX
164 Done
165 EOF
166 test_cmp expect actual
167'
168
169test_expect_success "setup proc-receive hook (option old-oid and new-oid, $PROTOCOL/porcelain)" '
170 write_script "$upstream/hooks/proc-receive" <<-EOF
171 printf >&2 "# proc-receive hook\n"
172 test-tool proc-receive -v \
8f0a2645 173 -r "ok refs/for/main/topic" \
15d3af5e
JX
174 -r "option old-oid $A" \
175 -r "option new-oid $B"
176 EOF
177'
178
8f0a2645
JS
179# Refs of upstream : main(A)
180# Refs of workbench: main(A) tags/v123
181# git push : refs/for/next/topic(A) refs/for/a/b/c/topic(A) refs/for/main/topic(A)
15d3af5e
JX
182test_expect_success "proc-receive: report option old-oid and new-oid ($PROTOCOL/porcelain)" '
183 git -C workbench push --porcelain origin \
8f0a2645 184 HEAD:refs/for/main/topic \
15d3af5e
JX
185 >out 2>&1 &&
186 make_user_friendly_and_stable_output <out >actual &&
187 cat >expect <<-EOF &&
188 remote: # pre-receive hook
8f0a2645 189 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e 190 remote: # proc-receive hook
8f0a2645
JS
191 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
192 remote: proc-receive> ok refs/for/main/topic
15d3af5e
JX
193 remote: proc-receive> option old-oid <COMMIT-A>
194 remote: proc-receive> option new-oid <COMMIT-B>
195 remote: # post-receive hook
8f0a2645 196 remote: post-receive< <COMMIT-A> <COMMIT-B> refs/for/main/topic
15d3af5e 197 To <URL/of/upstream.git>
8f0a2645 198 HEAD:refs/for/main/topic <OID-A>..<OID-B>
15d3af5e
JX
199 Done
200 EOF
201 test_cmp expect actual
202'
203
204test_expect_success "setup proc-receive hook (report with multiple rewrites, $PROTOCOL/porcelain)" '
205 write_script "$upstream/hooks/proc-receive" <<-EOF
206 printf >&2 "# proc-receive hook\n"
207 test-tool proc-receive -v \
208 -r "ok refs/for/a/b/c/topic" \
209 -r "ok refs/for/next/topic" \
210 -r "option refname refs/pull/123/head" \
8f0a2645 211 -r "ok refs/for/main/topic" \
15d3af5e
JX
212 -r "option refname refs/pull/124/head" \
213 -r "option old-oid $B" \
214 -r "option forced-update" \
215 -r "option new-oid $A"
216
217 EOF
218'
219
8f0a2645
JS
220# Refs of upstream : main(A)
221# Refs of workbench: main(A) tags/v123
222# git push : refs/for/next/topic(A) refs/for/a/b/c/topic(A) refs/for/main/topic(A)
15d3af5e
JX
223test_expect_success "proc-receive: report with multiple rewrites ($PROTOCOL/porcelain)" '
224 git -C workbench push --porcelain origin \
225 HEAD:refs/for/next/topic \
226 HEAD:refs/for/a/b/c/topic \
8f0a2645 227 HEAD:refs/for/main/topic \
15d3af5e
JX
228 >out 2>&1 &&
229 make_user_friendly_and_stable_output <out >actual &&
230 cat >expect <<-EOF &&
231 remote: # pre-receive hook
232 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
233 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
8f0a2645 234 remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e
JX
235 remote: # proc-receive hook
236 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic
237 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
8f0a2645 238 remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
15d3af5e
JX
239 remote: proc-receive> ok refs/for/a/b/c/topic
240 remote: proc-receive> ok refs/for/next/topic
241 remote: proc-receive> option refname refs/pull/123/head
8f0a2645 242 remote: proc-receive> ok refs/for/main/topic
15d3af5e
JX
243 remote: proc-receive> option refname refs/pull/124/head
244 remote: proc-receive> option old-oid <COMMIT-B>
245 remote: proc-receive> option forced-update
246 remote: proc-receive> option new-oid <COMMIT-A>
247 remote: # post-receive hook
195d6eae 248 remote: post-receive< <ZERO-OID> <COMMIT-A> refs/pull/123/head
15d3af5e 249 remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/a/b/c/topic
195d6eae 250 remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head
15d3af5e 251 To <URL/of/upstream.git>
63518a57 252 * HEAD:refs/pull/123/head [new reference]
15d3af5e 253 * HEAD:refs/for/a/b/c/topic [new reference]
63518a57 254 + HEAD:refs/pull/124/head <OID-B>...<OID-A> (forced update)
15d3af5e
JX
255 Done
256 EOF
257 test_cmp expect actual &&
258
822ee894 259 test_cmp_refs -C "$upstream" <<-EOF
8f0a2645 260 <COMMIT-A> refs/heads/main
15d3af5e 261 EOF
15d3af5e 262'