#!/bin/sh global test_description := ''detect some push errors early (before contacting remote)'' source ./test-lib.sh test_expect_success 'setup commits' ' test_commit one ' test_expect_success 'setup remote' ' git init --bare remote.git && git remote add origin remote.git ' test_expect_success 'setup fake receive-pack' ' FAKE_RP_ROOT=$(pwd) && export FAKE_RP_ROOT && write_script fake-rp <<-\EOF && echo yes >"$FAKE_RP_ROOT"/rp-ran exit 1 EOF git config remote.origin.receivepack "\"\$FAKE_RP_ROOT/fake-rp\"" ' test_expect_success 'detect missing branches early' ' echo no >rp-ran && echo no >expect && test_must_fail git push origin missing && test_cmp expect rp-ran ' test_expect_success 'detect missing sha1 expressions early' ' echo no >rp-ran && echo no >expect && test_must_fail git push origin master~2:master && test_cmp expect rp-ran ' test_expect_success 'detect ambiguous refs early' ' git branch foo && git tag foo && echo no >rp-ran && echo no >expect && test_must_fail git push origin foo && test_cmp expect rp-ran ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"detect some push errors early (before contacting remote)">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <"setup commits">)} {(SQ <"\n"> <"\ttest_commit one\n">)}) (C {(test_expect_success)} {(SQ <"setup remote">)} {(SQ <"\n"> <"\tgit init --bare remote.git &&\n"> <"\tgit remote add origin remote.git\n">)} ) (C {(test_expect_success)} {(SQ <"setup fake receive-pack">)} { (SQ <"\n"> <"\tFAKE_RP_ROOT=$(pwd) &&\n"> <"\texport FAKE_RP_ROOT &&\n"> <"\twrite_script fake-rp <<-\\EOF &&\n"> <"\techo yes >\"$FAKE_RP_ROOT\"/rp-ran\n"> <"\texit 1\n"> <"\tEOF\n"> <"\tgit config remote.origin.receivepack \"\\\"\\$FAKE_RP_ROOT/fake-rp\\\"\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"detect missing branches early">)} { (SQ <"\n"> <"\techo no >rp-ran &&\n"> <"\techo no >expect &&\n"> <"\ttest_must_fail git push origin missing &&\n"> <"\ttest_cmp expect rp-ran\n"> ) } ) (C {(test_expect_success)} {(SQ <"detect missing sha1 expressions early">)} { (SQ <"\n"> <"\techo no >rp-ran &&\n"> <"\techo no >expect &&\n"> <"\ttest_must_fail git push origin master~2:master &&\n"> <"\ttest_cmp expect rp-ran\n"> ) } ) (C {(test_expect_success)} {(SQ <"detect ambiguous refs early">)} { (SQ <"\n"> <"\tgit branch foo &&\n"> <"\tgit tag foo &&\n"> <"\techo no >rp-ran &&\n"> <"\techo no >expect &&\n"> <"\ttest_must_fail git push origin foo &&\n"> <"\ttest_cmp expect rp-ran\n"> ) } ) (C {(test_done)}) ] )