#!/bin/sh global test_description := ''for-each-ref errors for broken refs'' source ./test-lib.sh global ZEROS := $_z40 global MISSING := 'abababababababababababababababababababab' test_expect_success setup ' git commit --allow-empty -m "Initial" && git tag testtag && git for-each-ref >full-list && git for-each-ref --format="%(objectname) %(refname)" >brief-list ' test_expect_success 'Broken refs are reported correctly' ' r=refs/heads/bogus && : >.git/$r && test_when_finished "rm -f .git/$r" && echo "warning: ignoring broken ref $r" >broken-err && git for-each-ref >out 2>err && test_i18ncmp full-list out && test_i18ncmp broken-err err ' test_expect_success 'NULL_SHA1 refs are reported correctly' ' r=refs/heads/zeros && echo $ZEROS >.git/$r && test_when_finished "rm -f .git/$r" && echo "warning: ignoring broken ref $r" >zeros-err && git for-each-ref >out 2>err && test_cmp full-list out && test_i18ncmp zeros-err err && git for-each-ref --format="%(objectname) %(refname)" >brief-out 2>brief-err && test_cmp brief-list brief-out && test_i18ncmp zeros-err brief-err ' test_expect_success 'Missing objects are reported correctly' ' r=refs/heads/missing && echo $MISSING >.git/$r && test_when_finished "rm -f .git/$r" && echo "fatal: missing object $MISSING for $r" >missing-err && test_must_fail git for-each-ref 2>err && test_i18ncmp missing-err err && ( cat brief-list && echo "$MISSING $r" ) | sort -k 2 >missing-brief-expected && git for-each-ref --format="%(objectname) %(refname)" >brief-out 2>brief-err && test_cmp missing-brief-expected brief-out && test_must_be_empty brief-err ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"for-each-ref errors for broken refs">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ZEROS) op:Equal rhs:{($ VSub_Name "$_z40")} spids:[15])] spids: [15] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MISSING) op: Equal rhs: {(abababababababababababababababababababab)} spids: [18] ) ] spids: [18] ) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\tgit commit --allow-empty -m \"Initial\" &&\n"> <"\tgit tag testtag &&\n"> <"\tgit for-each-ref >full-list &&\n"> <"\tgit for-each-ref --format=\"%(objectname) %(refname)\" >brief-list\n"> ) } ) (C {(test_expect_success)} {(SQ <"Broken refs are reported correctly">)} { (SQ <"\n"> <"\tr=refs/heads/bogus &&\n"> <"\t: >.git/$r &&\n"> <"\ttest_when_finished \"rm -f .git/$r\" &&\n"> <"\techo \"warning: ignoring broken ref $r\" >broken-err &&\n"> <"\tgit for-each-ref >out 2>err &&\n"> <"\ttest_i18ncmp full-list out &&\n"> <"\ttest_i18ncmp broken-err err\n"> ) } ) (C {(test_expect_success)} {(SQ <"NULL_SHA1 refs are reported correctly">)} { (SQ <"\n"> <"\tr=refs/heads/zeros &&\n"> <"\techo $ZEROS >.git/$r &&\n"> <"\ttest_when_finished \"rm -f .git/$r\" &&\n"> <"\techo \"warning: ignoring broken ref $r\" >zeros-err &&\n"> <"\tgit for-each-ref >out 2>err &&\n"> <"\ttest_cmp full-list out &&\n"> <"\ttest_i18ncmp zeros-err err &&\n"> <"\tgit for-each-ref --format=\"%(objectname) %(refname)\" >brief-out 2>brief-err &&\n"> <"\ttest_cmp brief-list brief-out &&\n"> <"\ttest_i18ncmp zeros-err brief-err\n"> ) } ) (C {(test_expect_success)} {(SQ <"Missing objects are reported correctly">)} { (SQ <"\n"> <"\tr=refs/heads/missing &&\n"> <"\techo $MISSING >.git/$r &&\n"> <"\ttest_when_finished \"rm -f .git/$r\" &&\n"> <"\techo \"fatal: missing object $MISSING for $r\" >missing-err &&\n"> <"\ttest_must_fail git for-each-ref 2>err &&\n"> <"\ttest_i18ncmp missing-err err &&\n"> <"\t(\n"> <"\t\tcat brief-list &&\n"> <"\t\techo \"$MISSING $r\"\n"> <"\t) | sort -k 2 >missing-brief-expected &&\n"> <"\tgit for-each-ref --format=\"%(objectname) %(refname)\" >brief-out 2>brief-err &&\n"> <"\ttest_cmp missing-brief-expected brief-out &&\n"> <"\ttest_must_be_empty brief-err\n"> ) } ) (C {(test_done)}) ] )