]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t5411/test-0027-push-options--porcelain.sh
Merge branch 'jx/t5411-flake-fix'
[thirdparty/git.git] / t / t5411 / test-0027-push-options--porcelain.sh
index d5d0dcb172fd83565efdf308811f0927d0948fb6..3a6561b5eab465b3b9eab20e29a3c4fa992d6a7c 100644 (file)
@@ -33,6 +33,68 @@ test_expect_success "enable push options ($PROTOCOL/porcelain)" '
        git -C "$upstream" config receive.advertisePushOptions true
 '
 
+test_expect_success "setup version=0 for proc-receive hook ($PROTOCOL/porcelain)" '
+       write_script "$upstream/hooks/proc-receive" <<-EOF
+       printf >&2 "# proc-receive hook\n"
+       test-tool proc-receive -v \
+               --version 0 \
+               -r "ok refs/for/main/topic"
+       EOF
+'
+
+# Refs of upstream : main(A)
+# Refs of workbench: main(A)  tags/v123
+# git push -o ...  :                       next(A)  refs/for/main/topic
+test_expect_success "proc-receive: ignore push-options for version 0 ($PROTOCOL/porcelain)" '
+       git -C workbench push \
+               --porcelain \
+               --atomic \
+               -o issue=123 \
+               -o reviewer=user1 \
+               origin \
+               HEAD:refs/heads/next \
+               HEAD:refs/for/main/topic \
+               >out 2>&1 &&
+       make_user_friendly_and_stable_output <out >actual &&
+       cat >expect <<-EOF &&
+       remote: # pre-receive hook
+       remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
+       remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
+       remote: # proc-receive hook
+       remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
+       remote: proc-receive> ok refs/for/main/topic
+       remote: # post-receive hook
+       remote: post-receive< <ZERO-OID> <COMMIT-A> refs/heads/next
+       remote: post-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic
+       To <URL/of/upstream.git>
+       *    HEAD:refs/heads/next    [new branch]
+       *    HEAD:refs/for/main/topic    [new reference]
+       Done
+       EOF
+       test_cmp expect actual &&
+       git -C "$upstream" show-ref >out &&
+       make_user_friendly_and_stable_output <out >actual &&
+       cat >expect <<-EOF &&
+       <COMMIT-A> refs/heads/main
+       <COMMIT-A> refs/heads/next
+       EOF
+       test_cmp expect actual
+'
+
+test_expect_success "restore proc-receive hook ($PROTOCOL/porcelain)" '
+       write_script "$upstream/hooks/proc-receive" <<-EOF
+       printf >&2 "# proc-receive hook\n"
+       test-tool proc-receive -v \
+               -r "ok refs/for/main/topic"
+       EOF
+'
+
+# Refs of upstream : main(A)             next(A)
+# Refs of workbench: main(A)  tags/v123
+test_expect_success "cleanup ($PROTOCOL/porcelain)" '
+       git -C "$upstream" update-ref -d refs/heads/next
+'
+
 # Refs of upstream : main(A)
 # Refs of workbench: main(A)  tags/v123
 # git push -o ...  :                       next(A)  refs/for/main/topic