(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:'git mktag: tag object verify test' span_id:12))} spids: [10] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: check_verify_failure body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [42] ) ] ) (C {(test_expect_success)} {(DQ ($ Id.VSub_Number '$1'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id: Id.Lit_Chars val: '\t\t( test_must_fail git mktag <tag.sig 2>message ) &&\n' span_id: 56 ) (Token id:Id.Lit_Chars val:'\t\tgrep "$expect" message\n' span_id:57) (Token id:Id.Lit_Chars val:'\t' span_id:58) ) } ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:76))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) (Token id:Id.Lit_Chars val:'\techo Hello >A &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\tgit update-index --add A &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial commit" &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\thead=$(git rev-parse --verify HEAD)\n' span_id:84) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:97) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:100) fd: -1 here_begin: {(EOF)} here_end_span_id: 105 stdin_parts: [('too short for a tag\n')] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'Tag object length check' span_id:110))} {(SQ (Token id:Id.Lit_Chars val:'^error: .*size wrong.*$' span_id:116))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:129) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:132) fd: -1 here_begin: {(EOF)} here_end_span_id: 141 stdin_parts: [ ('xxxxxx 139e9b33986b1c2670fff52c5067603117b3e895\n') ('type tag\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"object" line label check' span_id:146))} {(SQ (Token id:Id.Lit_Chars val:'^error: char0: .*"object "$' span_id:150))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:163) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:166) fd: -1 here_begin: {(EOF)} here_end_span_id: 175 stdin_parts: [ ('object zz9e9b33986b1c2670fff52c5067603117b3e895\n') ('type tag\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"object" line SHA1 check' span_id:180))} {(SQ (Token id:Id.Lit_Chars val:'^error: char7: .*SHA1 hash$' span_id:184))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:197) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:200) fd: -1 here_begin: {(EOF)} here_end_span_id: 209 stdin_parts: [ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('xxxx tag\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"type" line label check' span_id:214))} {(SQ (Token id:Id.Lit_Chars val:'^error: char47: .*"\\\\ntype "$' span_id:218))} ) (command.Simple words: [{(echo)} {(DQ ('object 779e9b33986b1c2670fff52c5067603117b3e895'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:235) fd: -1 arg_word: {(tag.sig)} ) ] ) (command.Simple words: [{(printf)} {(DQ ('type tagsssssssssssssssssssssssssssssss'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:244) fd: -1 arg_word: {(tag.sig)} ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"type" line eol check' span_id:251))} {(SQ (Token id:Id.Lit_Chars val:'^error: char48: .*"\\\\n"$' span_id:255))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:268) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:271) fd: -1 here_begin: {(EOF)} here_end_span_id: 280 stdin_parts: [ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type tag\n') ('xxx mytag\n') ('tagger . <> 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"tag" line label check #1' span_id:285))} {(SQ (Token id:Id.Lit_Chars val:'^error: char57: no "tag " found$' span_id:291))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:304) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:307) fd: -1 here_begin: {(EOF)} here_end_span_id: 314 stdin_parts: [ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type taggggggggggggggggggggggggggggggg\n') ('tag\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"tag" line label check #2' span_id:319))} {(SQ (Token id:Id.Lit_Chars val:'^error: char87: no "tag " found$' span_id:325))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:338) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:341) fd: -1 here_begin: {(EOF)} here_end_span_id: 348 stdin_parts: [ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type taggggggggggggggggggggggggggggggg\n') ('tag mytag\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"type" line type-name length check' span_id:353))} {(SQ (Token id:Id.Lit_Chars val:'^error: char53: type too long$' span_id:359))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:372) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:375) fd: -1 here_begin: {(EOF)} here_end_span_id: 384 stdin_parts: [ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type tagggg\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'verify object (SHA1/type) check' span_id:389))} {(SQ (Token id:Id.Lit_Chars val:'^error: char7: could not verify object.*$' span_id:395))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:408) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:411) fd: -1 here_begin: {(EOF)} here_end_span_id: 422 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag my\ttag\n') ('tagger . <> 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'verify tag-name check' span_id:427))} {(SQ (Token id:Id.Lit_Chars val:'^error: char67: could not verify tag name$' span_id:433))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:446) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:449) fd: -1 here_begin: {(EOF)} here_end_span_id: 460 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('\n') ('This is filler\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"tagger" line label check #1' span_id:465))} {(SQ (Token id:Id.Lit_Chars val:'^error: char70: could not find "tagger "$' span_id:471))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:484) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:487) fd: -1 here_begin: {(EOF)} here_end_span_id: 499 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger\n') ('\n') ('This is filler\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'"tagger" line label check #2' span_id:504))} {(SQ (Token id:Id.Lit_Chars val:'^error: char70: could not find "tagger "$' span_id:510))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:523) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:526) fd: -1 here_begin: {(EOF)} here_end_span_id: 538 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger <> 0 +0000\n') ('\n') ('This is filler\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'disallow missing tag author name' span_id:543))} {(SQ (Token id:Id.Lit_Chars val:'^error: char77: missing tagger name$' span_id:549))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:562) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:565) fd: -1 here_begin: {(EOF)} here_end_span_id: 577 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <\n') (' > 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'disallow malformed tagger' span_id:582))} {(SQ (Token id:Id.Lit_Chars val:'^error: char77: malformed tagger field$' span_id:588))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:601) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:604) fd: -1 here_begin: {(EOF)} here_end_span_id: 615 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <> 0 +0000\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'allow empty tag email' span_id:622))} { (SQ (Token id: Id.Lit_Chars val: 'git mktag <tag.sig >.git/refs/tags/mytag 2>message' span_id: 628 ) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:641) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:644) fd: -1 here_begin: {(EOF)} here_end_span_id: 655 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tag ger@example.com> 0 +0000\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'disallow spaces in tag email' span_id:660))} {(SQ (Token id:Id.Lit_Chars val:'^error: char77: malformed tagger field$' span_id:666))} ) (command.Simple words: [ {(tr)} {(SQ (Token id:Id.Lit_Chars val:_ span_id:680))} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:684))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:687) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:690) fd: -1 here_begin: {(EOF)} here_end_span_id: 701 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com>__\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'disallow missing tag timestamp' span_id:706))} {(SQ (Token id:Id.Lit_Chars val:'^error: char107: missing tag timestamp$' span_id:712))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:725) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:728) fd: -1 here_begin: {(EOF)} here_end_span_id: 739 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> Tue Mar 25 15:47:44 2008\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'detect invalid tag timestamp1' span_id:744))} {(SQ (Token id:Id.Lit_Chars val:'^error: char107: missing tag timestamp$' span_id:750))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:763) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:766) fd: -1 here_begin: {(EOF)} here_end_span_id: 777 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 2008-03-31T12:20:15-0500\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'detect invalid tag timestamp2' span_id:782))} {(SQ (Token id:Id.Lit_Chars val:'^error: char111: malformed tag timestamp$' span_id:788))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:801) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:804) fd: -1 here_begin: {(EOF)} here_end_span_id: 815 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 GMT\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'detect invalid tag timezone1' span_id:820))} {(SQ (Token id:Id.Lit_Chars val:'^error: char118: malformed tag timezone$' span_id:826))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:839) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:842) fd: -1 here_begin: {(EOF)} here_end_span_id: 853 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 + 30\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'detect invalid tag timezone2' span_id:858))} {(SQ (Token id:Id.Lit_Chars val:'^error: char118: malformed tag timezone$' span_id:864))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:877) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:880) fd: -1 here_begin: {(EOF)} here_end_span_id: 891 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 -1430\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'detect invalid tag timezone3' span_id:896))} {(SQ (Token id:Id.Lit_Chars val:'^error: char118: malformed tag timezone$' span_id:902))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:915) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:918) fd: -1 here_begin: {(EOF)} here_end_span_id: 930 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 -0500\n') ('this line should not be here\n') ('\n') ] ) ] ) (C {(check_verify_failure)} {(SQ (Token id:Id.Lit_Chars val:'detect invalid header entry' span_id:935))} {(SQ (Token id:Id.Lit_Chars val:'^error: char124: trailing garbage in tag header$' span_id:941))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:954) fd: -1 arg_word: {(tag.sig)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:957) fd: -1 here_begin: {(EOF)} here_end_span_id: 968 stdin_parts: [ ('object ') ($ Id.VSub_DollarName '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 -0500\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'create valid tag' span_id:975))} { (SQ (Token id: Id.Lit_Chars val: 'git mktag <tag.sig >.git/refs/tags/mytag 2>message' span_id: 981 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check mytag' span_id:997))} {(SQ (Token id:Id.Lit_Chars val:'git tag -l | grep mytag' span_id:1003))} ) (C {(test_done)}) ] )