(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: { (SQ (Token id: Id.Lit_Chars val: 'Test handling of ref names that check-ref-format rejects' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:19) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:20) (Token id:Id.Lit_Chars val:'\ttest_commit two\n' span_id:21) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fast-import: fail on invalid branch name ".badbranchname"' span_id: 28 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:32) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/objects/pack_* .git/objects/index_*" &&\n' span_id: 33 ) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\t\tcommit .badbranchname\n' span_id:35) (Token id: Id.Lit_Chars val: '\t\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 36 ) (Token id:Id.Lit_Chars val:'\t\tdata <<COMMIT\n' span_id:37) (Token id:Id.Lit_Chars val:'\t\tcorrupt\n' span_id:38) (Token id:Id.Lit_Chars val:'\t\tCOMMIT\n' span_id:39) (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id:Id.Lit_Chars val:'\t\tfrom refs/heads/master\n' span_id:41) (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:43) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 44 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'fast-import: fail on invalid branch name "bad[branch]name"' span_id: 51 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/objects/pack_* .git/objects/index_*" &&\n' span_id: 56 ) (Token id:Id.Lit_Chars val:'\tcat >input <<-INPUT_END &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\tcommit bad[branch]name\n' span_id:58) (Token id: Id.Lit_Chars val: '\t\tcommitter $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE\n' span_id: 59 ) (Token id:Id.Lit_Chars val:'\t\tdata <<COMMIT\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\tcorrupt\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\tCOMMIT\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\t\tfrom refs/heads/master\n' span_id:64) (Token id:Id.Lit_Chars val:'\n' span_id:65) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:66) (Token id: Id.Lit_Chars val: '\ttest_must_fail git fast-import <input\n' span_id: 67 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch shows badly named ref as warning' span_id:74))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 79 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 80 ) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:81) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep -e "ignoring ref with broken name refs/heads/broken\\.\\.\\.ref" error &&\n' span_id: 82 ) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" output\n' span_id:83) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -d can delete badly named ref' span_id:90))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:94) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 95 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 96 ) (Token id:Id.Lit_Chars val:'\tgit branch -d broken...ref &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id:99) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" output\n' span_id: 100 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -D can delete badly named ref' span_id:107))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:111) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 112 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 113 ) (Token id:Id.Lit_Chars val:'\tgit branch -D broken...ref &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id:116) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" output\n' span_id: 117 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -D cannot delete non-ref in .git dir' span_id:124))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:128) (Token id: Id.Lit_Chars val: '\techo precious >.git/my-private-file &&\n' span_id: 129 ) (Token id:Id.Lit_Chars val:'\techo precious >expect &&\n' span_id:130) (Token id: Id.Lit_Chars val: '\ttest_must_fail git branch -D ../../my-private-file &&\n' span_id: 131 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect .git/my-private-file\n' span_id:132) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -D cannot delete ref in .git dir' span_id:139))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:143) (Token id: Id.Lit_Chars val: '\tgit rev-parse HEAD >.git/my-private-file &&\n' span_id: 144 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expect &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\tgit branch foo/legit &&\n' span_id:146) (Token id: Id.Lit_Chars val: '\ttest_must_fail git branch -D foo////./././../../../my-private-file &&\n' span_id: 147 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect .git/my-private-file\n' span_id:148) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -D cannot delete absolute path' span_id:155))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:159) (Token id:Id.Lit_Chars val:'\tgit branch -f extra &&\n' span_id:160) (Token id: Id.Lit_Chars val: '\ttest_must_fail git branch -D "$(pwd)/.git/refs/heads/extra" &&\n' span_id: 161 ) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev HEAD extra\n' span_id:162) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git branch cannot create a badly named ref' span_id:169))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:173) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 174 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git branch broken...ref &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id:177) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" output\n' span_id: 178 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -m cannot rename to a bad ref name' span_id:185))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:189) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 190 ) (Token id:Id.Lit_Chars val:'\ttest_might_fail git branch -D goodref &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\tgit branch goodref &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\ttest_must_fail git branch -m goodref broken...ref &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev master goodref &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:195) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id: 196 ) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" output\n' span_id:197) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'branch -m can rename from a bad ref name' span_id:204))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:208) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 209 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 210 ) (Token id:Id.Lit_Chars val:'\tgit branch -m broken...ref renamed &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev master renamed &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:213) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id: 214 ) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" output\n' span_id:215) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'push cannot create a badly named ref' span_id:222))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:226) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 227 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git push "file://$(pwd)" HEAD:refs/heads/broken...ref &&\n' span_id: 228 ) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:229) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id: 230 ) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" output\n' span_id:231) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'push --mirror can delete badly named ref' span_id:238))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:242) (Token id:Id.Lit_Chars val:'\ttop=$(pwd) &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\tgit init src &&\n' span_id:244) (Token id:Id.Lit_Chars val:'\tgit init dest &&\n' span_id:245) (Token id:Id.Lit_Chars val:'\n' span_id:246) (Token id:Id.Lit_Chars val:'\t(\n' span_id:247) (Token id:Id.Lit_Chars val:'\t\tcd src &&\n' span_id:248) (Token id:Id.Lit_Chars val:'\t\ttest_commit one\n' span_id:249) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:250) (Token id:Id.Lit_Chars val:'\t(\n' span_id:251) (Token id:Id.Lit_Chars val:'\t\tcd dest &&\n' span_id:252) (Token id:Id.Lit_Chars val:'\t\ttest_commit two &&\n' span_id:253) (Token id:Id.Lit_Chars val:'\t\tgit checkout --detach &&\n' span_id:254) (Token id: Id.Lit_Chars val: '\t\tcp .git/refs/heads/master .git/refs/heads/broken...ref\n' span_id: 255 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:256) (Token id: Id.Lit_Chars val: '\tgit -C src push --mirror "file://$top/dest" &&\n' span_id: 257 ) (Token id:Id.Lit_Chars val:'\tgit -C dest branch >output 2>error &&\n' span_id:258) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id: 259 ) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" output\n' span_id:260) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rev-parse skips symref pointing to broken name' span_id:267))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:271) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 272 ) (Token id:Id.Lit_Chars val:'\tgit branch shadow one &&\n' span_id:273) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 274 ) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/broken...ref\\n" >.git/refs/tags/shadow &&\n' span_id: 275 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/refs/tags/shadow" &&\n' span_id:276) (Token id: Id.Lit_Chars val: '\tgit rev-parse --verify one >expect &&\n' span_id: 277 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify shadow >actual 2>err &&\n' span_id:278) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:279) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "ignoring dangling symref refs/tags/shadow" err\n' span_id: 280 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'for-each-ref emits warnings for broken names' span_id:287))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:291) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 292 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 293 ) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/broken...ref\\n" >.git/refs/heads/badname &&\n' span_id: 294 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/refs/heads/badname" &&\n' span_id:295) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/master\\n" >.git/refs/heads/broken...symref &&\n' span_id: 296 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...symref" &&\n' span_id: 297 ) (Token id:Id.Lit_Chars val:'\tgit for-each-ref >output 2>error &&\n' span_id:298) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" output &&\n' span_id: 299 ) (Token id:Id.Lit_Chars val:'\t! grep -e "badname" output &&\n' span_id:300) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.symref" output &&\n' span_id: 301 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "ignoring ref with broken name refs/heads/broken\\.\\.\\.ref" error &&\n' span_id: 302 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "ignoring broken ref refs/heads/badname" error &&\n' span_id: 303 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "ignoring ref with broken name refs/heads/broken\\.\\.\\.symref" error\n' span_id: 304 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update-ref -d can delete broken name' span_id:311))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:315) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 316 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 317 ) (Token id: Id.Lit_Chars val: '\tgit update-ref -d refs/heads/broken...ref >output 2>error &&\n' span_id: 318 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output &&\n' span_id:319) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error &&\n' span_id:320) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:321) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id: 322 ) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" output\n' span_id:323) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -d can delete broken name' span_id:330))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:334) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 335 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 336 ) (Token id:Id.Lit_Chars val:'\tgit branch -d broken...ref >output 2>error &&\n' span_id:337) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Deleted branch broken...ref (was broken)" output &&\n' span_id: 338 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error &&\n' span_id:339) (Token id:Id.Lit_Chars val:'\tgit branch >output 2>error &&\n' span_id:340) (Token id:Id.Lit_Chars val:'\t! grep -e "broken\\.\\.\\.ref" error &&\n' span_id:341) (Token id: Id.Lit_Chars val: '\t! grep -e "broken\\.\\.\\.ref" output\n' span_id: 342 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --no-deref -d can delete symref to broken name' span_id: 349 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:353) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 354 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 355 ) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/broken...ref\\n" >.git/refs/heads/badname &&\n' span_id: 356 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/refs/heads/badname" &&\n' span_id:357) (Token id: Id.Lit_Chars val: '\tgit update-ref --no-deref -d refs/heads/badname >output 2>error &&\n' span_id: 358 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/refs/heads/badname &&\n' span_id:359) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output &&\n' span_id:360) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:361) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -d can delete symref to broken name' span_id:368))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:372) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 373 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 374 ) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/broken...ref\\n" >.git/refs/heads/badname &&\n' span_id: 375 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/refs/heads/badname" &&\n' span_id:376) (Token id: Id.Lit_Chars val: '\tgit branch -d badname >output 2>error &&\n' span_id: 377 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/refs/heads/badname &&\n' span_id:378) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Deleted branch badname (was refs/heads/broken\\.\\.\\.ref)" output &&\n' span_id: 379 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:380) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --no-deref -d can delete dangling symref to broken name' span_id: 387 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:391) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/broken...ref\\n" >.git/refs/heads/badname &&\n' span_id: 392 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/refs/heads/badname" &&\n' span_id:393) (Token id: Id.Lit_Chars val: '\tgit update-ref --no-deref -d refs/heads/badname >output 2>error &&\n' span_id: 394 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/refs/heads/badname &&\n' span_id:395) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output &&\n' span_id:396) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:397) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'branch -d can delete dangling symref to broken name' span_id: 404 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:408) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/broken...ref\\n" >.git/refs/heads/badname &&\n' span_id: 409 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/refs/heads/badname" &&\n' span_id:410) (Token id: Id.Lit_Chars val: '\tgit branch -d badname >output 2>error &&\n' span_id: 411 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/refs/heads/badname &&\n' span_id:412) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Deleted branch badname (was refs/heads/broken\\.\\.\\.ref)" output &&\n' span_id: 413 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:414) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref -d can delete broken name through symref' span_id: 421 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:425) (Token id: Id.Lit_Chars val: '\tcp .git/refs/heads/master .git/refs/heads/broken...ref &&\n' span_id: 426 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...ref" &&\n' span_id: 427 ) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/broken...ref\\n" >.git/refs/heads/badname &&\n' span_id: 428 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -f .git/refs/heads/badname" &&\n' span_id:429) (Token id: Id.Lit_Chars val: '\tgit update-ref -d refs/heads/badname >output 2>error &&\n' span_id: 430 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/refs/heads/broken...ref &&\n' span_id:431) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output &&\n' span_id:432) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:433) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --no-deref -d can delete symref with broken name' span_id: 440 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:444) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/master\\n" >.git/refs/heads/broken...symref &&\n' span_id: 445 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...symref" &&\n' span_id: 446 ) (Token id: Id.Lit_Chars val: '\tgit update-ref --no-deref -d refs/heads/broken...symref >output 2>error &&\n' span_id: 447 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/refs/heads/broken...symref &&\n' span_id:448) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output &&\n' span_id:449) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:450) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'branch -d can delete symref with broken name' span_id:457))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:461) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/master\\n" >.git/refs/heads/broken...symref &&\n' span_id: 462 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...symref" &&\n' span_id: 463 ) (Token id:Id.Lit_Chars val:'\tgit branch -d broken...symref >output 2>error &&\n' span_id:464) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/refs/heads/broken...symref &&\n' span_id: 465 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Deleted branch broken...symref (was refs/heads/master)" output &&\n' span_id: 466 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:467) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --no-deref -d can delete dangling symref with broken name' span_id: 474 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:478) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/idonotexist\\n" >.git/refs/heads/broken...symref &&\n' span_id: 479 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...symref" &&\n' span_id: 480 ) (Token id: Id.Lit_Chars val: '\tgit update-ref --no-deref -d refs/heads/broken...symref >output 2>error &&\n' span_id: 481 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/refs/heads/broken...symref &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:484) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'branch -d can delete dangling symref with broken name' span_id: 491 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:495) (Token id: Id.Lit_Chars val: '\tprintf "ref: refs/heads/idonotexist\\n" >.git/refs/heads/broken...symref &&\n' span_id: 496 ) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/refs/heads/broken...symref" &&\n' span_id: 497 ) (Token id:Id.Lit_Chars val:'\tgit branch -d broken...symref >output 2>error &&\n' span_id:498) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/refs/heads/broken...symref &&\n' span_id: 499 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Deleted branch broken...symref (was refs/heads/idonotexist)" output &&\n' span_id: 500 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty error\n' span_id:501) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update-ref -d cannot delete non-ref in .git dir' span_id:508))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:512) (Token id: Id.Lit_Chars val: '\techo precious >.git/my-private-file &&\n' span_id: 513 ) (Token id:Id.Lit_Chars val:'\techo precious >expect &&\n' span_id:514) (Token id: Id.Lit_Chars val: '\ttest_must_fail git update-ref -d my-private-file >output 2>error &&\n' span_id: 515 ) (Token id:Id.Lit_Chars val:'\ttest_must_be_empty output &&\n' span_id:516) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep -e "refusing to update ref with bad name" error &&\n' span_id: 517 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect .git/my-private-file\n' span_id:518) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update-ref -d cannot delete absolute path' span_id:525))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:529) (Token id:Id.Lit_Chars val:'\tgit branch -f extra &&\n' span_id:530) (Token id: Id.Lit_Chars val: '\ttest_must_fail git update-ref -d "$(pwd)/.git/refs/heads/extra" &&\n' span_id: 531 ) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev HEAD extra\n' span_id:532) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --stdin fails create with bad ref name' span_id: 539 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:543) (Token id: Id.Lit_Chars val: '\techo "create ~a refs/heads/master" >stdin &&\n' span_id: 544 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git update-ref --stdin <stdin 2>err &&\n' span_id:545) (Token id: Id.Lit_Chars val: '\tgrep "fatal: invalid ref format: ~a" err\n' span_id: 546 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --stdin fails update with bad ref name' span_id: 553 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:557) (Token id: Id.Lit_Chars val: '\techo "update ~a refs/heads/master" >stdin &&\n' span_id: 558 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git update-ref --stdin <stdin 2>err &&\n' span_id:559) (Token id: Id.Lit_Chars val: '\tgrep "fatal: invalid ref format: ~a" err\n' span_id: 560 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --stdin fails delete with bad ref name' span_id: 567 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:571) (Token id: Id.Lit_Chars val: '\techo "delete ~a refs/heads/master" >stdin &&\n' span_id: 572 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git update-ref --stdin <stdin 2>err &&\n' span_id:573) (Token id: Id.Lit_Chars val: '\tgrep "fatal: invalid ref format: ~a" err\n' span_id: 574 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --stdin -z fails create with bad ref name' span_id: 581 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:585) (Token id: Id.Lit_Chars val: '\tprintf "%s\\0" "create ~a " refs/heads/master >stdin &&\n' span_id: 586 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git update-ref -z --stdin <stdin 2>err &&\n' span_id: 587 ) (Token id:Id.Lit_Chars val:'\tgrep "fatal: invalid ref format: ~a " err\n' span_id:588) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --stdin -z fails update with bad ref name' span_id: 595 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:599) (Token id: Id.Lit_Chars val: '\tprintf "%s\\0" "update ~a" refs/heads/master "" >stdin &&\n' span_id: 600 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git update-ref -z --stdin <stdin 2>err &&\n' span_id: 601 ) (Token id:Id.Lit_Chars val:'\tgrep "fatal: invalid ref format: ~a" err\n' span_id:602) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'update-ref --stdin -z fails delete with bad ref name' span_id: 609 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:613) (Token id: Id.Lit_Chars val: '\tprintf "%s\\0" "delete ~a" refs/heads/master >stdin &&\n' span_id: 614 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git update-ref -z --stdin <stdin 2>err &&\n' span_id: 615 ) (Token id:Id.Lit_Chars val:'\tgrep "fatal: invalid ref format: ~a" err\n' span_id:616) ) } ) (C {(test_done)}) ] )