Git fork
at reftables-rust 69 lines 2.2 kB view raw
1#!/bin/sh 2 3test_description='for-each-ref errors for broken refs' 4 5. ./test-lib.sh 6 7ZEROS=$ZERO_OID 8 9test_expect_success setup ' 10 MISSING=$(test_oid deadbeef) && 11 git commit --allow-empty -m "Initial" && 12 git tag testtag && 13 git for-each-ref >full-list && 14 git for-each-ref --format="%(objectname) %(refname)" >brief-list 15' 16 17test_expect_success REFFILES 'Broken refs are reported correctly' ' 18 r=refs/heads/bogus && 19 : >.git/$r && 20 test_when_finished "rm -f .git/$r" && 21 echo "warning: ignoring broken ref $r" >broken-err && 22 git for-each-ref >out 2>err && 23 test_cmp full-list out && 24 test_cmp broken-err err 25' 26 27test_expect_success REFFILES 'NULL_SHA1 refs are reported correctly' ' 28 r=refs/heads/zeros && 29 echo $ZEROS >.git/$r && 30 test_when_finished "rm -f .git/$r" && 31 echo "warning: ignoring broken ref $r" >zeros-err && 32 git for-each-ref >out 2>err && 33 test_cmp full-list out && 34 test_cmp zeros-err err && 35 git for-each-ref --format="%(objectname) %(refname)" >brief-out 2>brief-err && 36 test_cmp brief-list brief-out && 37 test_cmp zeros-err brief-err 38' 39 40test_expect_success 'Missing objects are reported correctly' ' 41 test_when_finished "git update-ref -d refs/heads/missing" && 42 test-tool ref-store main update-ref msg refs/heads/missing "$MISSING" "$ZERO_OID" REF_SKIP_OID_VERIFICATION && 43 echo "fatal: missing object $MISSING for refs/heads/missing" >missing-err && 44 test_must_fail git for-each-ref 2>err && 45 test_cmp missing-err err && 46 ( 47 cat brief-list && 48 echo "$MISSING refs/heads/missing" 49 ) | sort -k 2 >missing-brief-expected && 50 git for-each-ref --format="%(objectname) %(refname)" >brief-out 2>brief-err && 51 test_cmp missing-brief-expected brief-out && 52 test_must_be_empty brief-err 53' 54 55test_expect_success 'ahead-behind requires an argument' ' 56 test_must_fail git for-each-ref \ 57 --format="%(ahead-behind)" 2>err && 58 echo "fatal: expected format: %(ahead-behind:<committish>)" >expect && 59 test_cmp expect err 60' 61 62test_expect_success 'missing ahead-behind base' ' 63 test_must_fail git for-each-ref \ 64 --format="%(ahead-behind:refs/heads/missing)" 2>err && 65 echo "fatal: failed to find '\''refs/heads/missing'\''" >expect && 66 test_cmp expect err 67' 68 69test_done