1#!/bin/sh 2 3test_description='detect some push errors early (before contacting remote)' 4. ./test-lib.sh 5 6test_expect_success 'setup commits' ' 7 test_commit one 8' 9 10test_expect_success 'setup remote' ' 11 git init --bare remote.git && 12 git remote add origin remote.git 13' 14 15test_expect_success 'setup fake receive-pack' ' 16 FAKE_RP_ROOT=$(pwd) && 17 export FAKE_RP_ROOT && 18 write_script fake-rp <<-\EOF && 19 echo yes >"$FAKE_RP_ROOT"/rp-ran 20 exit 1 21 EOF 22 git config remote.origin.receivepack "\"\$FAKE_RP_ROOT/fake-rp\"" 23' 24 25test_expect_success 'detect missing branches early' ' 26 echo no >rp-ran && 27 echo no >expect && 28 test_must_fail git push origin missing && 29 test_cmp expect rp-ran 30' 31 32test_expect_success 'detect missing sha1 expressions early' ' 33 echo no >rp-ran && 34 echo no >expect && 35 test_must_fail git push origin main~2:main && 36 test_cmp expect rp-ran 37' 38 39test_expect_success 'detect ambiguous refs early' ' 40 git branch foo && 41 git tag foo && 42 echo no >rp-ran && 43 echo no >expect && 44 test_must_fail git push origin foo && 45 test_cmp expect rp-ran 46' 47 48test_done 49