(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description spids:[13])
          op: Equal
          rhs: {(SQ <'for-each-ref test'>)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ VSub_Name '$TEST_DIRECTORY')) (/lib-gpg.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:datestamp spids:[34])
          op: Equal
          rhs: {(1151968723)}
          spids: [34]
        )
      ]
      spids: [34]
    )
    (FuncDef
      name: setdate_and_increment
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GIT_COMMITTER_DATE spids:[45])
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$datestamp') (' +0200'))}
                  spids: [45]
                )
              ]
              spids: [45]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:datestamp spids:[52])
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {(DQ ($ VSub_Name '$datestamp'))} {(Lit_Other '+')} {(1)})
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [53 63]
                      )
                    }
                  spids: [52]
                )
              ]
              spids: [52]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:GIT_AUTHOR_DATE spids:[66])
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$datestamp') (' +0200'))}
                  spids: [66]
                )
              ]
              spids: [66]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:datestamp spids:[73])
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {(DQ ($ VSub_Name '$datestamp'))} {(Lit_Other '+')} {(1)})
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [74 84]
                      )
                    }
                  spids: [73]
                )
              ]
              spids: [73]
            )
            (C {(export)} {(GIT_COMMITTER_DATE)} {(GIT_AUTHOR_DATE)})
          ]
          spids: [42]
        )
      spids: [37 41]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <'\n'> <'\tsetdate_and_increment &&\n'> <'\techo "Using $datestamp" > one &&\n'> 
          <'\tgit add one &&\n'> <'\tgit commit -m "Initial" &&\n'> <'\tsetdate_and_increment &&\n'> 
          <'\tgit tag -a -m "Tagging at $datestamp" testtag &&\n'> <'\tgit update-ref refs/remotes/origin/master master &&\n'> <'\tgit remote add origin nowhere &&\n'> 
          <'\tgit config branch.master.remote origin &&\n'> <'\tgit config branch.master.merge refs/heads/master &&\n'> <'\tgit remote add myfork elsewhere &&\n'> 
          <'\tgit config remote.pushdefault myfork &&\n'> <'\tgit config push.default current\n'>
        )
      }
    )
    (FuncDef
      name: test_atom
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(head)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ref spids:[137])
                          op: Equal
                          rhs: {(refs/heads/master)}
                          spids: [137]
                        )
                      ]
                      spids: [137]
                    )
                  ]
                  spids: [134 135 140 16777215]
                )
                (case_arm
                  pat_list: [{(tag)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ref spids:[146])
                          op: Equal
                          rhs: {(refs/tags/testtag)}
                          spids: [146]
                        )
                      ]
                      spids: [146]
                    )
                  ]
                  spids: [143 144 149 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ref spids:[155])
                          op: Equal
                          rhs: {($ VSub_Number '$1')}
                          spids: [155]
                        )
                      ]
                      spids: [155]
                    )
                  ]
                  spids: [152 153 158 16777215]
                )
              ]
              spids: [125 131 161]
            )
            (SimpleCommand
              words: [{(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Number '$3'))}]
              redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})]
            )
            (C 
              {(test_expect_) 
                (BracedVarSub
                  token: <VSub_Number 4>
                  suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(success)})
                  spids: [179 183]
                )
              } {($ VSub_Name '$PREREQ')} {(DQ ('basic atom: ') ($ VSub_Number '$1') (' ') ($ VSub_Number '$2'))} 
              {
                (DQ ('\n') ("\t\tgit for-each-ref --format='%(") ($ VSub_Number '$2') (")' ") 
                  ($ VSub_Name '$ref') (' >actual &&\n') ('\t\tsanitize_pgp <actual >actual.clean &&\n') 
                  ('\t\ttest_cmp expected actual.clean\n') ('\t')
                )
              }
            )
          ]
          spids: [122]
        )
      spids: [118 121]
    )
    (C {(test_atom)} {(head)} {(refname)} {(refs/heads/master)})
    (C {(test_atom)} {(head)} {(refname) (Lit_Other ':') (short)} {(master)})
    (C {(test_atom)} {(head)} {(refname) (Lit_Other ':') (Lit_VarLike 'strip=') (1)} {(heads/master)})
    (C {(test_atom)} {(head)} {(refname) (Lit_Other ':') (Lit_VarLike 'strip=') (2)} {(master)})
    (C {(test_atom)} {(head)} {(upstream)} {(refs/remotes/origin/master)})
    (C {(test_atom)} {(head)} {(upstream) (Lit_Other ':') (short)} {(origin/master)})
    (C {(test_atom)} {(head)} {(push)} {(refs/remotes/myfork/master)})
    (C {(test_atom)} {(head)} {(push) (Lit_Other ':') (short)} {(myfork/master)})
    (C {(test_atom)} {(head)} {(objecttype)} {(commit)})
    (C {(test_atom)} {(head)} {(objectsize)} {(171)})
    (C {(test_atom)} {(head)} {(objectname)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(git)} {(rev-parse)} {(refs/heads/master)})])
          left_token: <Left_CommandSub '$('>
          spids: [307 313]
        )
      }
    )
    (C {(test_atom)} {(head)} {(objectname) (Lit_Other ':') (short)} 
      {
        (CommandSubPart
          command_list: 
            (CommandList
              children: [(C {(git)} {(rev-parse)} {(--short)} {(refs/heads/master)})]
            )
          left_token: <Left_CommandSub '$('>
          spids: [323 331]
        )
      }
    )
    (C {(test_atom)} {(head)} {(tree)} 
      {
        (CommandSubPart
          command_list: 
            (CommandList
              children: [
                (C {(git)} {(rev-parse)} 
                  {(refs/heads/master) (Lit_Other '^') (Lit_LBrace '{') (tree) (Lit_RBrace '}')}
                )
              ]
            )
          left_token: <Left_CommandSub '$('>
          spids: [339 349]
        )
      }
    )
    (C {(test_atom)} {(head)} {(parent)} {(SQ )})
    (C {(test_atom)} {(head)} {(numparent)} {(0)})
    (C {(test_atom)} {(head)} {(object)} {(SQ )})
    (C {(test_atom)} {(head)} {(type)} {(SQ )})
    (C {(test_atom)} {(head)} {(SQ <'*objectname'>)} {(SQ )})
    (C {(test_atom)} {(head)} {(SQ <'*objecttype'>)} {(SQ )})
    (C {(test_atom)} {(head)} {(author)} {(SQ <'A U Thor <author@example.com> 1151968724 +0200'>)})
    (C {(test_atom)} {(head)} {(authorname)} {(SQ <'A U Thor'>)})
    (C {(test_atom)} {(head)} {(authoremail)} {(SQ <'<author@example.com>'>)})
    (C {(test_atom)} {(head)} {(authordate)} {(SQ <'Tue Jul 4 01:18:44 2006 +0200'>)})
    (C {(test_atom)} {(head)} {(committer)} {(SQ <'C O Mitter <committer@example.com> 1151968723 +0200'>)})
    (C {(test_atom)} {(head)} {(committername)} {(SQ <'C O Mitter'>)})
    (C {(test_atom)} {(head)} {(committeremail)} {(SQ <'<committer@example.com>'>)})
    (C {(test_atom)} {(head)} {(committerdate)} {(SQ <'Tue Jul 4 01:18:43 2006 +0200'>)})
    (C {(test_atom)} {(head)} {(tag)} {(SQ )})
    (C {(test_atom)} {(head)} {(tagger)} {(SQ )})
    (C {(test_atom)} {(head)} {(taggername)} {(SQ )})
    (C {(test_atom)} {(head)} {(taggeremail)} {(SQ )})
    (C {(test_atom)} {(head)} {(taggerdate)} {(SQ )})
    (C {(test_atom)} {(head)} {(creator)} {(SQ <'C O Mitter <committer@example.com> 1151968723 +0200'>)})
    (C {(test_atom)} {(head)} {(creatordate)} {(SQ <'Tue Jul 4 01:18:43 2006 +0200'>)})
    (C {(test_atom)} {(head)} {(subject)} {(SQ <Initial>)})
    (C {(test_atom)} {(head)} {(contents) (Lit_Other ':') (subject)} {(SQ <Initial>)})
    (C {(test_atom)} {(head)} {(body)} {(SQ )})
    (C {(test_atom)} {(head)} {(contents) (Lit_Other ':') (body)} {(SQ )})
    (C {(test_atom)} {(head)} {(contents) (Lit_Other ':') (signature)} {(SQ )})
    (C {(test_atom)} {(head)} {(contents)} {(SQ <'Initial\n'>)})
    (C {(test_atom)} {(head)} {(HEAD)} {(SQ <'*'>)})
    (C {(test_atom)} {(tag)} {(refname)} {(refs/tags/testtag)})
    (C {(test_atom)} {(tag)} {(refname) (Lit_Other ':') (short)} {(testtag)})
    (C {(test_atom)} {(tag)} {(upstream)} {(SQ )})
    (C {(test_atom)} {(tag)} {(push)} {(SQ )})
    (C {(test_atom)} {(tag)} {(objecttype)} {(tag)})
    (C {(test_atom)} {(tag)} {(objectsize)} {(154)})
    (C {(test_atom)} {(tag)} {(objectname)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(git)} {(rev-parse)} {(refs/tags/testtag)})])
          left_token: <Left_CommandSub '$('>
          spids: [685 691]
        )
      }
    )
    (C {(test_atom)} {(tag)} {(objectname) (Lit_Other ':') (short)} 
      {
        (CommandSubPart
          command_list: 
            (CommandList
              children: [(C {(git)} {(rev-parse)} {(--short)} {(refs/tags/testtag)})]
            )
          left_token: <Left_CommandSub '$('>
          spids: [701 709]
        )
      }
    )
    (C {(test_atom)} {(tag)} {(tree)} {(SQ )})
    (C {(test_atom)} {(tag)} {(parent)} {(SQ )})
    (C {(test_atom)} {(tag)} {(numparent)} {(SQ )})
    (C {(test_atom)} {(tag)} {(object)} 
      {
        (CommandSubPart
          command_list: 
            (CommandList
              children: [(C {(git)} {(rev-parse)} {(refs/tags/testtag) (Lit_Other '^') (0)})]
            )
          left_token: <Left_CommandSub '$('>
          spids: [744 752]
        )
      }
    )
    (C {(test_atom)} {(tag)} {(type)} {(SQ <commit>)})
    (C {(test_atom)} {(tag)} {(SQ <'*objectname'>)} {(SQ <ea122842f48be4afb2d1fc6a4b96c05885ab7463>)})
    (C {(test_atom)} {(tag)} {(SQ <'*objecttype'>)} {(SQ <commit>)})
    (C {(test_atom)} {(tag)} {(author)} {(SQ )})
    (C {(test_atom)} {(tag)} {(authorname)} {(SQ )})
    (C {(test_atom)} {(tag)} {(authoremail)} {(SQ )})
    (C {(test_atom)} {(tag)} {(authordate)} {(SQ )})
    (C {(test_atom)} {(tag)} {(committer)} {(SQ )})
    (C {(test_atom)} {(tag)} {(committername)} {(SQ )})
    (C {(test_atom)} {(tag)} {(committeremail)} {(SQ )})
    (C {(test_atom)} {(tag)} {(committerdate)} {(SQ )})
    (C {(test_atom)} {(tag)} {(tag)} {(SQ <testtag>)})
    (C {(test_atom)} {(tag)} {(tagger)} {(SQ <'C O Mitter <committer@example.com> 1151968725 +0200'>)})
    (C {(test_atom)} {(tag)} {(taggername)} {(SQ <'C O Mitter'>)})
    (C {(test_atom)} {(tag)} {(taggeremail)} {(SQ <'<committer@example.com>'>)})
    (C {(test_atom)} {(tag)} {(taggerdate)} {(SQ <'Tue Jul 4 01:18:45 2006 +0200'>)})
    (C {(test_atom)} {(tag)} {(creator)} {(SQ <'C O Mitter <committer@example.com> 1151968725 +0200'>)})
    (C {(test_atom)} {(tag)} {(creatordate)} {(SQ <'Tue Jul 4 01:18:45 2006 +0200'>)})
    (C {(test_atom)} {(tag)} {(subject)} {(SQ <'Tagging at 1151968727'>)})
    (C {(test_atom)} {(tag)} {(contents) (Lit_Other ':') (subject)} {(SQ <'Tagging at 1151968727'>)})
    (C {(test_atom)} {(tag)} {(body)} {(SQ )})
    (C {(test_atom)} {(tag)} {(contents) (Lit_Other ':') (body)} {(SQ )})
    (C {(test_atom)} {(tag)} {(contents) (Lit_Other ':') (signature)} {(SQ )})
    (C {(test_atom)} {(tag)} {(contents)} {(SQ <'Tagging at 1151968727\n'>)})
    (C {(test_atom)} {(tag)} {(HEAD)} {(SQ <' '>)})
    (C {(test_expect_success)} {(SQ <'Check invalid atoms names are errors'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git for-each-ref --format="%(INVALID)" refs/heads\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'arguments to :strip must be positive integers'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git for-each-ref --format="%(refname:strip=0)" &&\n'> 
          <'\ttest_must_fail git for-each-ref --format="%(refname:strip=-1)" &&\n'> <'\ttest_must_fail git for-each-ref --format="%(refname:strip=foo)"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'stripping refnames too far gives an error'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git for-each-ref --format="%(refname:strip=3)"\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'Check format specifiers are ignored in naming date atoms'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --format="%(authordate)" refs/heads &&\n'> 
          <'\tgit for-each-ref --format="%(authordate:default) %(authordate)" refs/heads &&\n'> <'\tgit for-each-ref --format="%(authordate) %(authordate:default)" refs/heads &&\n'> 
          <
'\tgit for-each-ref --format="%(authordate:default) %(authordate:default)" refs/heads\n'
          >
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check valid format specifiers for date fields'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --format="%(authordate:default)" refs/heads &&\n'> 
          <'\tgit for-each-ref --format="%(authordate:relative)" refs/heads &&\n'> <'\tgit for-each-ref --format="%(authordate:short)" refs/heads &&\n'> 
          <'\tgit for-each-ref --format="%(authordate:local)" refs/heads &&\n'> <'\tgit for-each-ref --format="%(authordate:iso8601)" refs/heads &&\n'> 
          <'\tgit for-each-ref --format="%(authordate:rfc2822)" refs/heads\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check invalid format specifiers are errors'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git for-each-ref --format="%(authordate:INVALID)" refs/heads\n'>)
      }
    )
    (FuncDef
      name: test_date
      body: 
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp]
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:f spids:[1094])
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [1094]
                    )
                  ]
                  spids: [1094]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:committer_date spids:[1100])
                      op: Equal
                      rhs: {($ VSub_Number '$2')}
                      spids: [1100]
                    )
                  ]
                  spids: [1100]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:author_date spids:[1106])
                      op: Equal
                      rhs: {($ VSub_Number '$3')}
                      spids: [1106]
                    )
                  ]
                  spids: [1106]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:tagger_date spids:[1112])
                      op: Equal
                      rhs: {($ VSub_Number '$4')}
                      spids: [1112]
                    )
                  ]
                  spids: [1112]
                )
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [
                    (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
                    (HereDoc
                      op: <Redir_DLessDash '<<-'>
                      fd: 16777215
                      here_begin: {(EOF)}
                      here_end_span_id: 1137
                      stdin_parts: [
                        ("'refs/heads/master' '")
                        ($ VSub_Name '$committer_date')
                        ("' '")
                        ($ VSub_Name '$author_date')
                        ("'\n")
                        ("'refs/tags/testtag' '")
                        ($ VSub_Name '$tagger_date')
                        ("'\n")
                      ]
                    )
                  ]
                )
                (Subshell
                  child: 
                    (AndOr
                      ops: [Op_DAmp]
                      children: [
                        (C {(git)} {(for-each-ref)} {(--shell)} 
                          {(--format) (Lit_Other '=') 
                            (DQ ('%(refname) %(committerdate') 
                              (BracedVarSub
                                token: <VSub_Name f>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonPlus
                                    arg_word: {(':') ($ VSub_Name '$f')}
                                  )
                                spids: [1154 1159]
                              ) (') %(authordate') 
                              (BracedVarSub
                                token: <VSub_Name f>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonPlus
                                    arg_word: {(':') ($ VSub_Name '$f')}
                                  )
                                spids: [1161 1166]
                              ) (')')
                            )
                          } {(refs/heads)}
                        )
                        (C {(git)} {(for-each-ref)} {(--shell)} 
                          {(--format) (Lit_Other '=') 
                            (DQ ('%(refname) %(taggerdate') 
                              (BracedVarSub
                                token: <VSub_Name f>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VTest_ColonPlus
                                    arg_word: {(':') ($ VSub_Name '$f')}
                                  )
                                spids: [1189 1194]
                              ) (')')
                            )
                          } {(refs/tags)}
                        )
                      ]
                    )
                  redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(actual)})]
                  spids: [1139 1203]
                )
                (C {(test_cmp)} {(expected)} {(actual)})
              ]
            )
          ]
          spids: [1091]
        )
      spids: [1086 1090]
    )
    (C {(test_expect_success)} {(SQ <'Check unformatted date fields output'>)} 
      {
        (SQ <'\n'> <'\ttest_date "" \\\n'> <'\t\t"Tue Jul 4 01:18:43 2006 +0200" \\\n'> 
          <'\t\t"Tue Jul 4 01:18:44 2006 +0200" \\\n'> <'\t\t"Tue Jul 4 01:18:45 2006 +0200"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "default" formatted date fields output'>)} 
      {
        (SQ <'\n'> <'\ttest_date default \\\n'> <'\t\t"Tue Jul 4 01:18:43 2006 +0200" \\\n'> 
          <'\t\t"Tue Jul 4 01:18:44 2006 +0200" \\\n'> <'\t\t"Tue Jul 4 01:18:45 2006 +0200"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "default-local" date fields output'>)} 
      {
        (SQ <'\n'> 
          <
'\ttest_date default-local "Mon Jul 3 23:18:43 2006" "Mon Jul 3 23:18:44 2006" "Mon Jul 3 23:18:45 2006"\n'
          >
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "relative" date fields output'>)} 
      {
        (SQ <'\n'> <'\tf=relative &&\n'> 
          <
'\t(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&\n'
          > <'\tgit for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "relative-local" date fields output'>)} 
      {
        (SQ <'\n'> <'\ttest_date relative-local \\\n'> 
          <'\t\t"$(git for-each-ref --format="%(committerdate:relative)" refs/heads)" \\\n'> <'\t\t"$(git for-each-ref --format="%(authordate:relative)" refs/heads)" \\\n'> 
          <'\t\t"$(git for-each-ref --format="%(taggerdate:relative)" refs/tags)"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "short" date fields output'>)} 
      {(SQ <'\n'> <'\ttest_date short 2006-07-04 2006-07-04 2006-07-04\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'Check format "short-local" date fields output'>)} 
      {(SQ <'\n'> <'\ttest_date short-local 2006-07-03 2006-07-03 2006-07-03\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'Check format "local" date fields output'>)} 
      {
        (SQ <'\n'> <'\ttest_date local \\\n'> <'\t\t"Mon Jul 3 23:18:43 2006" \\\n'> 
          <'\t\t"Mon Jul 3 23:18:44 2006" \\\n'> <'\t\t"Mon Jul 3 23:18:45 2006"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "iso8601" date fields output'>)} 
      {
        (SQ <'\n'> <'\ttest_date iso8601 \\\n'> <'\t\t"2006-07-04 01:18:43 +0200" \\\n'> 
          <'\t\t"2006-07-04 01:18:44 +0200" \\\n'> <'\t\t"2006-07-04 01:18:45 +0200"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "iso8601-local" date fields output'>)} 
      {
        (SQ <'\n'> 
          <
'\ttest_date iso8601-local "2006-07-03 23:18:43 +0000" "2006-07-03 23:18:44 +0000" "2006-07-03 23:18:45 +0000"\n'
          >
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "rfc2822" date fields output'>)} 
      {
        (SQ <'\n'> <'\ttest_date rfc2822 \\\n'> <'\t\t"Tue, 4 Jul 2006 01:18:43 +0200" \\\n'> 
          <'\t\t"Tue, 4 Jul 2006 01:18:44 +0200" \\\n'> <'\t\t"Tue, 4 Jul 2006 01:18:45 +0200"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "rfc2822-local" date fields output'>)} 
      {
        (SQ <'\n'> 
          <
'\ttest_date rfc2822-local "Mon, 3 Jul 2006 23:18:43 +0000" "Mon, 3 Jul 2006 23:18:44 +0000" "Mon, 3 Jul 2006 23:18:45 +0000"\n'
          >
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format "raw" date fields output'>)} 
      {(SQ <'\n'> <'\ttest_date raw "1151968723 +0200" "1151968724 +0200" "1151968725 +0200"\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'Check format "raw-local" date fields output'>)} 
      {
        (SQ <'\n'> 
          <'\ttest_date raw-local "1151968723 +0000" "1151968724 +0000" "1151968725 +0000"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format of strftime date fields'>)} 
      {
        (SQ <'\n'> <'\techo "my date is 2006-07-04" >expected &&\n'> <'\tgit for-each-ref \\\n'> 
          <'\t  --format="%(authordate:format:my date is %Y-%m-%d)" \\\n'> <'\t  refs/heads >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check format of strftime-local date fields'>)} 
      {
        (SQ <'\n'> <'\techo "my date is 2006-07-03" >expected &&\n'> <'\tgit for-each-ref \\\n'> 
          <'\t  --format="%(authordate:format-local:my date is %Y-%m-%d)" \\\n'> <'\t  refs/heads >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'exercise strftime with odd fields'>)} 
      {
        (SQ <'\n'> <'\techo >expected &&\n'> 
          <'\tgit for-each-ref --format="%(authordate:format:)" refs/heads >actual &&\n'> <'\ttest_cmp expected actual &&\n'> 
          <'\tlong="long format -- $_z40$_z40$_z40$_z40$_z40$_z40$_z40" &&\n'> <'\techo $long >expected &&\n'> 
          <'\tgit for-each-ref --format="%(authordate:format:$long)" refs/heads >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 1485
          stdin_parts: [
            ('refs/heads/master\n')
            ('refs/remotes/origin/master\n')
            ('refs/tags/testtag\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Verify ascending sort'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --format="%(refname)" --sort=refname >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 1513
          stdin_parts: [
            ('refs/tags/testtag\n')
            ('refs/remotes/origin/master\n')
            ('refs/heads/master\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Verify descending sort'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --format="%(refname)" --sort=-refname >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 1540
          stdin_parts: [
            ("'refs/heads/master'\n")
            ("'refs/remotes/origin/master'\n")
            ("'refs/tags/testtag'\n")
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Quoting style: shell'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --shell --format="%(refname)" >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Quoting style: perl'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --perl --format="%(refname)" >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Quoting style: python'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --python --format="%(refname)" >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 1593
          stdin_parts: [
            ('"refs/heads/master"\n')
            ('"refs/remotes/origin/master"\n')
            ('"refs/tags/testtag"\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Quoting style: tcl'>)} 
      {
        (SQ <'\n'> <'\tgit for-each-ref --tcl --format="%(refname)" >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (ForEach
      iter_name: i
      iter_words: [
        {(DQ ('--perl --shell'))}
        {(DQ ('-s --python'))}
        {(DQ ('--python --tcl'))}
        {(DQ ('--tcl --perl'))}
      ]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (C {(test_expect_success)} {(DQ ('more than one quoting style: ') ($ VSub_Name '$i'))} 
              {
                (DQ ('\n') ('\t\tgit for-each-ref ') ($ VSub_Name '$i') (' 2>&1 | (read line &&\n') 
                  ('\t\tcase ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('line in\n') ('\t\t') 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('error: more than one quoting style') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
                  ('*) : happy;;\n') ('\t\t*) false\n') ('\t\tesac)\n') ('\t')
                )
              }
            )
          ]
          spids: [1631 1659]
        )
      spids: [1613 1629]
    )
    (C {(test_expect_success)} {(SQ <'setup for upstream:track[short]'>)} 
      {(SQ <'\n'> <'\ttest_commit two\n'>)}
    )
    (C {(test_atom)} {(head)} {(upstream) (Lit_Other ':') (track)} {(SQ <'[ahead 1]'>)})
    (C {(test_atom)} {(head)} {(upstream) (Lit_Other ':') (trackshort)} {(SQ <'>'>)})
    (C {(test_atom)} {(head)} {(push) (Lit_Other ':') (track)} {(SQ <'[ahead 1]'>)})
    (C {(test_atom)} {(head)} {(push) (Lit_Other ':') (trackshort)} {(SQ <'>'>)})
    (C {(test_expect_success)} {(SQ <'Check that :track[short] cannot be used with other atoms'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git for-each-ref --format="%(refname:track)" 2>/dev/null &&\n'> 
          <'\ttest_must_fail git for-each-ref --format="%(refname:trackshort)" 2>/dev/null\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check that :track[short] works when upstream is invalid'>)} 
      {
        (SQ <'\n'> <'\tcat >expected <<-\\EOF &&\n'> <'\n'> <'\n'> <'\tEOF\n'> 
          <'\ttest_when_finished "git config branch.master.merge refs/heads/master" &&\n'> <'\tgit config branch.master.merge refs/heads/does-not-exist &&\n'> <'\tgit for-each-ref \\\n'> 
          <'\t\t--format="%(upstream:track)$LF%(upstream:trackshort)" \\\n'> <'\t\trefs/heads >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'Check for invalid refname format'>)} 
      {(SQ <'\n'> <'\ttest_must_fail git for-each-ref --format="%(refname:INVALID)"\n'>)}
    )
    (FuncDef
      name: get_color
      body: 
        (BraceGroup
          children: [(C {(git)} {(config)} {(--get-color)} {(no.such.slot)} {(DQ ($ VSub_Number '$1'))})]
          spids: [1774]
        )
      spids: [1769 1773]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 1889
          stdin_parts: [
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(git)} {(rev-parse)} {(--short)} {(refs/heads/master)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [1800 1808]
            )
            (' ')
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(green)})])
              left_token: <Left_CommandSub '$('>
              spids: [1810 1814]
            )
            (master)
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(reset)})])
              left_token: <Left_CommandSub '$('>
              spids: [1816 1820]
            )
            ('\n')
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(git)} {(rev-parse)} {(--short)} {(refs/remotes/origin/master)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [1822 1830]
            )
            (' ')
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(green)})])
              left_token: <Left_CommandSub '$('>
              spids: [1832 1836]
            )
            (origin/master)
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(reset)})])
              left_token: <Left_CommandSub '$('>
              spids: [1838 1842]
            )
            ('\n')
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(git)} {(rev-parse)} {(--short)} {(refs/tags/testtag)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [1844 1852]
            )
            (' ')
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(green)})])
              left_token: <Left_CommandSub '$('>
              spids: [1854 1858]
            )
            (testtag)
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(reset)})])
              left_token: <Left_CommandSub '$('>
              spids: [1860 1864]
            )
            ('\n')
            (CommandSubPart
              command_list: 
                (CommandList
                  children: [(C {(git)} {(rev-parse)} {(--short)} {(refs/tags/two)})]
                )
              left_token: <Left_CommandSub '$('>
              spids: [1866 1874]
            )
            (' ')
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(green)})])
              left_token: <Left_CommandSub '$('>
              spids: [1876 1880]
            )
            (two)
            (CommandSubPart
              command_list: (CommandList children:[(C {(get_color)} {(reset)})])
              left_token: <Left_CommandSub '$('>
              spids: [1882 1886]
            )
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Check %(color:...) '>)} 
      {
        (SQ <'\n'> 
          <
'\tgit for-each-ref --format="%(objectname:short) %(color:green)%(refname:short)" >actual &&\n'
          > <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 1915
          stdin_parts: [('heads/master\n') ('tags/master\n')]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Check ambiguous head and tag refs (strict)'>)} 
      {
        (SQ <'\n'> <'\tgit config --bool core.warnambiguousrefs true &&\n'> 
          <'\tgit checkout -b newtag &&\n'> <'\techo "Using $datestamp" > one &&\n'> <'\tgit add one &&\n'> <'\tgit commit -m "Branch" &&\n'> 
          <'\tsetdate_and_increment &&\n'> <'\tgit tag -m "Tagging at $datestamp" master &&\n'> 
          <
'\tgit for-each-ref --format "%(refname:short)" refs/heads/master refs/tags/master >actual &&\n'
          > <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 1948
          stdin_parts: [('heads/master\n') ('master\n')]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Check ambiguous head and tag refs (loose)'>)} 
      {
        (SQ <'\n'> <'\tgit config --bool core.warnambiguousrefs false &&\n'> 
          <
'\tgit for-each-ref --format "%(refname:short)" refs/heads/master refs/tags/master >actual &&\n'
          > <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EscapedLiteralPart token:<Lit_EscapedChar '\\E'>) (OF)}
          here_end_span_id: 1975
          stdin_parts: [('heads/ambiguous\n') ('ambiguous\n')]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Check ambiguous head and tag refs II (loose)'>)} 
      {
        (SQ <'\n'> <'\tgit checkout master &&\n'> <'\tgit tag ambiguous testtag^0 &&\n'> 
          <'\tgit branch ambiguous testtag^0 &&\n'> 
          <
'\tgit for-each-ref --format "%(refname:short)" refs/heads/ambiguous refs/tags/ambiguous >actual &&\n'
          > <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'an unusual tag with an incomplete line'>)} 
      {
        (SQ <'\n'> <'\n'> <'\tgit tag -m "bogo" bogo &&\n'> <'\tbogo=$(git cat-file tag bogo) &&\n'> 
          <'\tbogo=$(printf "%s" "$bogo" | git mktag) &&\n'> <'\tgit tag -f bogo "$bogo" &&\n'> <'\tgit for-each-ref --format "%(body)" refs/tags/bogo\n'> <'\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'create tag with subject and body content'>)} 
      {
        (SQ <'\n'> <'\tcat >>msg <<-\\EOF &&\n'> <'\t\tthe subject line\n'> <'\n'> 
          <'\t\tfirst body line\n'> <'\t\tsecond body line\n'> <'\tEOF\n'> <'\tgit tag -F msg subject-body\n'>
        )
      }
    )
    (C {(test_atom)} {(refs/tags/subject-body)} {(subject)} {(SQ <'the subject line'>)})
    (C {(test_atom)} {(refs/tags/subject-body)} {(body)} 
      {(SQ <'first body line\n'> <'second body line\n'>)}
    )
    (C {(test_atom)} {(refs/tags/subject-body)} {(contents)} 
      {(SQ <'the subject line\n'> <'\n'> <'first body line\n'> <'second body line\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'create tag with multiline subject'>)} 
      {
        (SQ <'\n'> <'\tcat >msg <<-\\EOF &&\n'> <'\t\tfirst subject line\n'> 
          <'\t\tsecond subject line\n'> <'\n'> <'\t\tfirst body line\n'> <'\t\tsecond body line\n'> <'\tEOF\n'> <'\tgit tag -F msg multiline\n'>
        )
      }
    )
    (C {(test_atom)} {(refs/tags/multiline)} {(subject)} {(SQ <'first subject line second subject line'>)})
    (C {(test_atom)} {(refs/tags/multiline)} {(contents) (Lit_Other ':') (subject)} 
      {(SQ <'first subject line second subject line'>)}
    )
    (C {(test_atom)} {(refs/tags/multiline)} {(body)} {(SQ <'first body line\n'> <'second body line\n'>)})
    (C {(test_atom)} {(refs/tags/multiline)} {(contents) (Lit_Other ':') (body)} 
      {(SQ <'first body line\n'> <'second body line\n'>)}
    )
    (C {(test_atom)} {(refs/tags/multiline)} {(contents) (Lit_Other ':') (signature)} {(SQ )})
    (C {(test_atom)} {(refs/tags/multiline)} {(contents)} 
      {
        (SQ <'first subject line\n'> <'second subject line\n'> <'\n'> <'first body line\n'> 
          <'second body line\n'>
        )
      }
    )
    (C {(test_expect_success)} {(GPG)} {(SQ <'create signed tags'>)} 
      {
        (SQ <'\n'> <'\tgit tag -s -m "" signed-empty &&\n'> 
          <'\tgit tag -s -m "subject line" signed-short &&\n'> <'\tcat >msg <<-\\EOF &&\n'> <'\tsubject line\n'> <'\n'> <'\tbody contents\n'> <'\tEOF\n'> 
          <'\tgit tag -s -F msg signed-long\n'>
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:sig spids:[2174])
          op: Equal
          rhs: {(SQ <'-----BEGIN PGP SIGNATURE-----\n'> <'-----END PGP SIGNATURE-----\n'>)}
          spids: [2174]
        )
      ]
      spids: [2174]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:PREREQ spids:[2181]) op:Equal rhs:{(GPG)} spids:[2181])]
      spids: [2181]
    )
    (C {(test_atom)} {(refs/tags/signed-empty)} {(subject)} {(SQ )})
    (C {(test_atom)} {(refs/tags/signed-empty)} {(contents) (Lit_Other ':') (subject)} {(SQ )})
    (C {(test_atom)} {(refs/tags/signed-empty)} {(body)} {(DQ ($ VSub_Name '$sig'))})
    (C {(test_atom)} {(refs/tags/signed-empty)} {(contents) (Lit_Other ':') (body)} {(SQ )})
    (C {(test_atom)} {(refs/tags/signed-empty)} {(contents) (Lit_Other ':') (signature)} 
      {(DQ ($ VSub_Name '$sig'))}
    )
    (C {(test_atom)} {(refs/tags/signed-empty)} {(contents)} {(DQ ($ VSub_Name '$sig'))})
    (C {(test_atom)} {(refs/tags/signed-short)} {(subject)} {(SQ <'subject line'>)})
    (C {(test_atom)} {(refs/tags/signed-short)} {(contents) (Lit_Other ':') (subject)} 
      {(SQ <'subject line'>)}
    )
    (C {(test_atom)} {(refs/tags/signed-short)} {(body)} {(DQ ($ VSub_Name '$sig'))})
    (C {(test_atom)} {(refs/tags/signed-short)} {(contents) (Lit_Other ':') (body)} {(SQ )})
    (C {(test_atom)} {(refs/tags/signed-short)} {(contents) (Lit_Other ':') (signature)} 
      {(DQ ($ VSub_Name '$sig'))}
    )
    (C {(test_atom)} {(refs/tags/signed-short)} {(contents)} 
      {(DQ ('subject line\n') ($ VSub_Name '$sig'))}
    )
    (C {(test_atom)} {(refs/tags/signed-long)} {(subject)} {(SQ <'subject line'>)})
    (C {(test_atom)} {(refs/tags/signed-long)} {(contents) (Lit_Other ':') (subject)} 
      {(SQ <'subject line'>)}
    )
    (C {(test_atom)} {(refs/tags/signed-long)} {(body)} {(DQ ('body contents\n') ($ VSub_Name '$sig'))})
    (C {(test_atom)} {(refs/tags/signed-long)} {(contents) (Lit_Other ':') (body)} 
      {(SQ <'body contents\n'>)}
    )
    (C {(test_atom)} {(refs/tags/signed-long)} {(contents) (Lit_Other ':') (signature)} 
      {(DQ ($ VSub_Name '$sig'))}
    )
    (C {(test_atom)} {(refs/tags/signed-long)} {(contents)} 
      {(DQ ('subject line\n') ('\n') ('body contents\n') ($ VSub_Name '$sig'))}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expected)})
        (HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(EOF)}
          here_end_span_id: 2411
          stdin_parts: [
            (CommandSubPart
              command_list: (CommandList children:[(C {(git)} {(rev-parse)} {(refs/tags/bogo)})])
              left_token: <Left_CommandSub '$('>
              spids: [2394 2400]
            )
            (' <committer@example.com> refs/tags/bogo\n')
            (CommandSubPart
              command_list: (CommandList children:[(C {(git)} {(rev-parse)} {(refs/tags/master)})])
              left_token: <Left_CommandSub '$('>
              spids: [2402 2408]
            )
            (' <committer@example.com> refs/tags/master\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'Verify sort with multiple keys'>)} 
      {
        (SQ <'\n'> 
          <
'\tgit for-each-ref --format="%(objectname) %(taggeremail) %(refname)" --sort=objectname --sort=taggeremail \\\n'
          > <'\t\trefs/tags/bogo refs/tags/master > actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)