Git fork
at reftables-rust 112 lines 4.6 kB view raw
1test_expect_success "config receive.procReceiveRefs = refs ($PROTOCOL/porcelain)" ' 2 git -C "$upstream" config --unset-all receive.procReceiveRefs && 3 git -C "$upstream" config --add receive.procReceiveRefs refs 4' 5 6# Refs of upstream : main(A) 7# Refs of workbench: main(A) tags/v123 8test_expect_success "setup upstream branches ($PROTOCOL/porcelain)" ' 9 ( 10 cd "$upstream" && 11 git update-ref refs/heads/main $B && 12 git update-ref refs/heads/foo $A && 13 git update-ref refs/heads/bar $A && 14 git update-ref refs/heads/baz $A 15 ) 16 17' 18 19test_expect_success "setup proc-receive hook ($PROTOCOL/porcelain)" ' 20 test_hook -C "$upstream" --clobber proc-receive <<-EOF 21 printf >&2 "# proc-receive hook\n" 22 test-tool proc-receive -v \ 23 -r "ok refs/heads/main" \ 24 -r "option fall-through" \ 25 -r "ok refs/heads/foo" \ 26 -r "option fall-through" \ 27 -r "ok refs/heads/bar" \ 28 -r "option fall-through" \ 29 -r "ok refs/for/main/topic" \ 30 -r "option refname refs/pull/123/head" \ 31 -r "option old-oid $A" \ 32 -r "option new-oid $B" \ 33 -r "ok refs/for/next/topic" \ 34 -r "option refname refs/pull/124/head" \ 35 -r "option old-oid $B" \ 36 -r "option new-oid $A" \ 37 -r "option forced-update" 38 EOF 39' 40 41# Refs of upstream : main(B) foo(A) bar(A)) baz(A) 42# Refs of workbench: main(A) tags/v123 43# git push -f : main(A) (NULL) (B) refs/for/main/topic(A) refs/for/next/topic(A) 44test_expect_success "proc-receive: process all refs ($PROTOCOL/porcelain)" ' 45 git -C workbench push --porcelain -f origin \ 46 HEAD:refs/heads/main \ 47 :refs/heads/foo \ 48 $B:refs/heads/bar \ 49 HEAD:refs/for/main/topic \ 50 HEAD:refs/for/next/topic \ 51 >out 2>&1 && 52 make_user_friendly_and_stable_output <out >actual && 53 format_and_save_expect <<-EOF && 54 > remote: # pre-receive hook Z 55 > remote: pre-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar Z 56 > remote: pre-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo Z 57 > remote: pre-receive< <COMMIT-B> <COMMIT-A> refs/heads/main Z 58 > remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z 59 > remote: pre-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic Z 60 > remote: # proc-receive hook Z 61 > remote: proc-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar Z 62 > remote: proc-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo Z 63 > remote: proc-receive< <COMMIT-B> <COMMIT-A> refs/heads/main Z 64 > remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/main/topic Z 65 > remote: proc-receive< <ZERO-OID> <COMMIT-A> refs/for/next/topic Z 66 > remote: proc-receive> ok refs/heads/main Z 67 > remote: proc-receive> option fall-through Z 68 > remote: proc-receive> ok refs/heads/foo Z 69 > remote: proc-receive> option fall-through Z 70 > remote: proc-receive> ok refs/heads/bar Z 71 > remote: proc-receive> option fall-through Z 72 > remote: proc-receive> ok refs/for/main/topic Z 73 > remote: proc-receive> option refname refs/pull/123/head Z 74 > remote: proc-receive> option old-oid <COMMIT-A> Z 75 > remote: proc-receive> option new-oid <COMMIT-B> Z 76 > remote: proc-receive> ok refs/for/next/topic Z 77 > remote: proc-receive> option refname refs/pull/124/head Z 78 > remote: proc-receive> option old-oid <COMMIT-B> Z 79 > remote: proc-receive> option new-oid <COMMIT-A> Z 80 > remote: proc-receive> option forced-update Z 81 > remote: # post-receive hook Z 82 > remote: post-receive< <COMMIT-A> <COMMIT-B> refs/heads/bar Z 83 > remote: post-receive< <COMMIT-A> <ZERO-OID> refs/heads/foo Z 84 > remote: post-receive< <COMMIT-B> <COMMIT-A> refs/heads/main Z 85 > remote: post-receive< <COMMIT-A> <COMMIT-B> refs/pull/123/head Z 86 > remote: post-receive< <COMMIT-B> <COMMIT-A> refs/pull/124/head Z 87 > To <URL/of/upstream.git> 88 > <COMMIT-B>:refs/heads/bar <COMMIT-A>..<COMMIT-B> 89 > - :refs/heads/foo [deleted] 90 > + HEAD:refs/heads/main <COMMIT-B>...<COMMIT-A> (forced update) 91 > HEAD:refs/pull/123/head <COMMIT-A>..<COMMIT-B> 92 > + HEAD:refs/pull/124/head <COMMIT-B>...<COMMIT-A> (forced update) 93 > Done 94 EOF 95 test_cmp expect actual && 96 97 test_cmp_refs -C "$upstream" <<-EOF 98 <COMMIT-B> refs/heads/bar 99 <COMMIT-A> refs/heads/baz 100 <COMMIT-A> refs/heads/main 101 EOF 102' 103 104# Refs of upstream : main(A) bar(A) baz(B) 105# Refs of workbench: main(A) tags/v123 106test_expect_success "cleanup ($PROTOCOL/porcelain)" ' 107 ( 108 cd "$upstream" && 109 git update-ref -d refs/heads/bar && 110 git update-ref -d refs/heads/baz 111 ) 112'