From: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> Change order of test cases and add new test cases: - git push --porcelain # failed: non-fast-forward - git push --porcelain --force - git push --porcelain --atomic # failed: non-fast-forward - git push --porcelain --atomic --force - git push --porcelain --force # failed: pre-receive declined Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> --- t/t5548-push-porcelain.sh | 90 ++++++++++++++++++++++++++++----------- 1 file changed, 65 insertions(+), 25 deletions(-) diff --git a/t/t5548-push-porcelain.sh b/t/t5548-push-porcelain.sh index ededd8edb9..799f6066a3 100755 --- a/t/t5548-push-porcelain.sh +++ b/t/t5548-push-porcelain.sh @@ -4,6 +4,9 @@ # test_description='Test git push porcelain output' +GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + . ./test-lib.sh # Create commits in <repo> and assign each commit's oid to shell variables @@ -132,6 +135,40 @@ run_git_push_porcelain_output_test() { ;; esac + # Refs of upstream : main(B) foo(A) bar(A) baz(A) + # Refs of workbench: main(A) baz(A) next(A) + # git-push : main(A) NULL (B) baz(A) next(A) + test_expect_success ".. git-push --porcelain ($PROTOCOL)" ' + test_when_finished "setup_upstream \"$upstream\"" && + test_must_fail git -C workbench push --porcelain origin \ + main \ + :refs/heads/foo \ + $B:bar \ + baz \ + next >out && + make_user_friendly_and_stable_output <out >actual && + format_and_save_expect <<-EOF && + > To <URL/of/upstream.git> + > = refs/heads/baz:refs/heads/baz [up to date] + > <COMMIT-B>:refs/heads/bar <COMMIT-A>..<COMMIT-B> + > - :refs/heads/foo [deleted] + > * refs/heads/next:refs/heads/next [new branch] + > ! refs/heads/main:refs/heads/main [rejected] (non-fast-forward) + > Done + EOF + test_cmp expect actual && + + git -C "$upstream" show-ref >out && + make_user_friendly_and_stable_output <out >actual && + cat >expect <<-EOF && + <COMMIT-B> refs/heads/bar + <COMMIT-A> refs/heads/baz + <COMMIT-B> refs/heads/main + <COMMIT-A> refs/heads/next + EOF + test_cmp expect actual + ' + # Refs of upstream : main(B) foo(A) bar(A) baz(A) # Refs of workbench: main(A) baz(A) next(A) # git-push : main(A) NULL (B) baz(A) next(A) @@ -203,13 +240,9 @@ run_git_push_porcelain_output_test() { # Refs of upstream : main(B) foo(A) bar(A) baz(A) # Refs of workbench: main(A) baz(A) next(A) # git-push : main(A) NULL (B) baz(A) next(A) - test_expect_success ".. pre-receive hook declined ($PROTOCOL)" ' - test_when_finished "rm -f \"$upstream/hooks/pre-receive\" && - setup_upstream \"$upstream\"" && - test_hook --setup -C "$upstream" pre-receive <<-EOF && - exit 1 - EOF - test_must_fail git -C workbench push --porcelain --force origin \ + test_expect_success ".. git push --porcelain --atomic --force ($PROTOCOL)" ' + test_when_finished "setup_upstream \"$upstream\"" && + git -C workbench push --porcelain --atomic --force origin \ main \ :refs/heads/foo \ $B:bar \ @@ -219,10 +252,10 @@ run_git_push_porcelain_output_test() { format_and_save_expect <<-EOF && > To <URL/of/upstream.git> > = refs/heads/baz:refs/heads/baz [up to date] - > ! <COMMIT-B>:refs/heads/bar [remote rejected] (pre-receive hook declined) - > ! :refs/heads/foo [remote rejected] (pre-receive hook declined) - > ! refs/heads/main:refs/heads/main [remote rejected] (pre-receive hook declined) - > ! refs/heads/next:refs/heads/next [remote rejected] (pre-receive hook declined) + > <COMMIT-B>:refs/heads/bar <COMMIT-A>..<COMMIT-B> + > - :refs/heads/foo [deleted] + > + refs/heads/main:refs/heads/main <COMMIT-B>...<COMMIT-A> (forced update) + > * refs/heads/next:refs/heads/next [new branch] > Done EOF test_cmp expect actual && @@ -230,29 +263,37 @@ run_git_push_porcelain_output_test() { git -C "$upstream" show-ref >out && make_user_friendly_and_stable_output <out >actual && cat >expect <<-EOF && - <COMMIT-A> refs/heads/bar + <COMMIT-B> refs/heads/bar <COMMIT-A> refs/heads/baz - <COMMIT-A> refs/heads/foo - <COMMIT-B> refs/heads/main + <COMMIT-A> refs/heads/main + <COMMIT-A> refs/heads/next EOF test_cmp expect actual ' # Refs of upstream : main(B) foo(A) bar(A) baz(A) # Refs of workbench: main(A) baz(A) next(A) - # git-push : main(A) next(A) - test_expect_success ".. non-fastforward push ($PROTOCOL)" ' - ( - cd workbench && - test_must_fail git push --porcelain origin \ - main \ - next - ) >out && + # git-push : main(A) NULL (B) baz(A) next(A) + test_expect_success ".. pre-receive hook declined ($PROTOCOL)" ' + test_when_finished "rm -f \"$upstream/hooks/pre-receive\" && + setup_upstream \"$upstream\"" && + test_hook --setup -C "$upstream" pre-receive <<-EOF && + exit 1 + EOF + test_must_fail git -C workbench push --porcelain --force origin \ + main \ + :refs/heads/foo \ + $B:bar \ + baz \ + next >out && make_user_friendly_and_stable_output <out >actual && format_and_save_expect <<-EOF && > To <URL/of/upstream.git> - > * refs/heads/next:refs/heads/next [new branch] - > ! refs/heads/main:refs/heads/main [rejected] (non-fast-forward) + > = refs/heads/baz:refs/heads/baz [up to date] + > ! <COMMIT-B>:refs/heads/bar [remote rejected] (pre-receive hook declined) + > ! :refs/heads/foo [remote rejected] (pre-receive hook declined) + > ! refs/heads/main:refs/heads/main [remote rejected] (pre-receive hook declined) + > ! refs/heads/next:refs/heads/next [remote rejected] (pre-receive hook declined) > Done EOF test_cmp expect actual && @@ -264,7 +305,6 @@ run_git_push_porcelain_output_test() { <COMMIT-A> refs/heads/baz <COMMIT-A> refs/heads/foo <COMMIT-B> refs/heads/main - <COMMIT-A> refs/heads/next EOF test_cmp expect actual ' -- 2.47.0.rc1.21.g81e7bd6151