(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'git mktag: tag object verify test'>)} spids: [10] ) ] spids: [10] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: check_verify_failure body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expect) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [42] ) ] spids: [42] ) (C {(test_expect_success)} {(DQ ($ VSub_Number '$1'))} { (SQ <'\n'> <'\t\t( test_must_fail git mktag <tag.sig 2>message ) &&\n'> <'\t\tgrep "$expect" message\n'> <'\t'> ) } ) ] spids: [39] ) spids: [34 38] ) (C {(test_expect_success)} {(SQ <setup>)} { (SQ <'\n'> <'\techo Hello >A &&\n'> <'\tgit update-index --add A &&\n'> <'\tgit commit -m "Initial commit" &&\n'> <'\thead=$(git rev-parse --verify HEAD)\n'> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[97]) (HereDoc op_id: Redir_DLess fd: 16777215 body: {(DQ ('too short for a tag\n'))} do_expansion: True here_end: EOF was_filled: T spids: [100] ) ] ) (C {(check_verify_failure)} {(SQ <'Tag object length check'>)} {(SQ <'^error: .*size wrong.*$'>)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[128]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('xxxxxx 139e9b33986b1c2670fff52c5067603117b3e895\n') ('type tag\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [131] ) ] ) (C {(check_verify_failure)} {(SQ <'"object" line label check'>)} {(SQ <'^error: char0: .*"object "$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[161]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object zz9e9b33986b1c2670fff52c5067603117b3e895\n') ('type tag\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [164] ) ] ) (C {(check_verify_failure)} {(SQ <'"object" line SHA1 check'>)} {(SQ <'^error: char7: .*SHA1 hash$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[194]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('xxxx tag\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [197] ) ] ) (C {(check_verify_failure)} {(SQ <'"type" line label check'>)} {(SQ <'^error: char47: .*"\\\\ntype "$'>)} ) (SimpleCommand words: [{(echo)} {(DQ ('object 779e9b33986b1c2670fff52c5067603117b3e895'))}] redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[231])] ) (SimpleCommand words: [{(printf)} {(DQ ('type tagsssssssssssssssssssssssssssssss'))}] redirects: [(Redir op_id:Redir_DGreat fd:16777215 arg_word:{(tag.sig)} spids:[240])] ) (C {(check_verify_failure)} {(SQ <'"type" line eol check'>)} {(SQ <'^error: char48: .*"\\\\n"$'>)}) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[264]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type tag\n') ('xxx mytag\n') ('tagger . <> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [267] ) ] ) (C {(check_verify_failure)} {(SQ <'"tag" line label check #1'>)} {(SQ <'^error: char57: no "tag " found$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[299]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type taggggggggggggggggggggggggggggggg\n') ('tag\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [302] ) ] ) (C {(check_verify_failure)} {(SQ <'"tag" line label check #2'>)} {(SQ <'^error: char87: no "tag " found$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[332]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type taggggggggggggggggggggggggggggggg\n') ('tag mytag\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [335] ) ] ) (C {(check_verify_failure)} {(SQ <'"type" line type-name length check'>)} {(SQ <'^error: char53: type too long$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[365]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object 779e9b33986b1c2670fff52c5067603117b3e895\n') ('type tagggg\n') ('tag mytag\n') ('tagger . <> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [368] ) ] ) (C {(check_verify_failure)} {(SQ <'verify object (SHA1/type) check'>)} {(SQ <'^error: char7: could not verify object.*$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[400]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag my\ttag\n') ('tagger . <> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [403] ) ] ) (C {(check_verify_failure)} {(SQ <'verify tag-name check'>)} {(SQ <'^error: char67: could not verify tag name$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[437]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('\n') ('This is filler\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [440] ) ] ) (C {(check_verify_failure)} {(SQ <'"tagger" line label check #1'>)} {(SQ <'^error: char70: could not find "tagger "$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[474]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger\n') ('\n') ('This is filler\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [477] ) ] ) (C {(check_verify_failure)} {(SQ <'"tagger" line label check #2'>)} {(SQ <'^error: char70: could not find "tagger "$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[512]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger <> 0 +0000\n') ('\n') ('This is filler\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [515] ) ] ) (C {(check_verify_failure)} {(SQ <'disallow missing tag author name'>)} {(SQ <'^error: char77: missing tagger name$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[550]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <\n') (' > 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [553] ) ] ) (C {(check_verify_failure)} {(SQ <'disallow malformed tagger'>)} {(SQ <'^error: char77: malformed tagger field$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[588]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [591] ) ] ) (C {(test_expect_success)} {(SQ <'allow empty tag email'>)} {(SQ <'git mktag <tag.sig >.git/refs/tags/mytag 2>message'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[627]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tag ger@example.com> 0 +0000\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [630] ) ] ) (C {(check_verify_failure)} {(SQ <'disallow spaces in tag email'>)} {(SQ <'^error: char77: malformed tagger field$'>)} ) (SimpleCommand words: [{(tr)} {(SQ <_>)} {(SQ <' '>)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[672]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com>__\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [675] ) ] ) (C {(check_verify_failure)} {(SQ <'disallow missing tag timestamp'>)} {(SQ <'^error: char107: missing tag timestamp$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[709]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> Tue Mar 25 15:47:44 2008\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [712] ) ] ) (C {(check_verify_failure)} {(SQ <'detect invalid tag timestamp1'>)} {(SQ <'^error: char107: missing tag timestamp$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[746]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 2008-03-31T12:20:15-0500\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [749] ) ] ) (C {(check_verify_failure)} {(SQ <'detect invalid tag timestamp2'>)} {(SQ <'^error: char111: malformed tag timestamp$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[783]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 GMT\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [786] ) ] ) (C {(check_verify_failure)} {(SQ <'detect invalid tag timezone1'>)} {(SQ <'^error: char118: malformed tag timezone$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[820]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 + 30\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [823] ) ] ) (C {(check_verify_failure)} {(SQ <'detect invalid tag timezone2'>)} {(SQ <'^error: char118: malformed tag timezone$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[857]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 -1430\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [860] ) ] ) (C {(check_verify_failure)} {(SQ <'detect invalid tag timezone3'>)} {(SQ <'^error: char118: malformed tag timezone$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[894]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$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') ) } do_expansion: True here_end: EOF was_filled: T spids: [897] ) ] ) (C {(check_verify_failure)} {(SQ <'detect invalid header entry'>)} {(SQ <'^error: char124: trailing garbage in tag header$'>)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:16777215 arg_word:{(tag.sig)} spids:[932]) (HereDoc op_id: Redir_DLess fd: 16777215 body: { (DQ ('object ') ($ VSub_Name '$head') ('\n') ('type commit\n') ('tag mytag\n') ('tagger T A Gger <tagger@example.com> 1206478233 -0500\n') ('\n') ) } do_expansion: True here_end: EOF was_filled: T spids: [935] ) ] ) (C {(test_expect_success)} {(SQ <'create valid tag'>)} {(SQ <'git mktag <tag.sig >.git/refs/tags/mytag 2>message'>)} ) (C {(test_expect_success)} {(SQ <'check mytag'>)} {(SQ <'git tag -l | grep mytag'>)}) (C {(test_done)}) ] )