(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)})
  ]
)