(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 commit-tree options test\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16) 
                (Token
                  id: Id.Lit_Chars
                  val: 'This test checks that git commit-tree can create a specific commit\n'
                  span_id: 17
                ) 
                (Token
                  id: Id.Lit_Chars
                  val: 'object by defining all environment variables that it understands.\n'
                  span_id: 18
                ) (Token id:Id.Lit_Chars val:'\n' span_id:19) 
                (Token
                  id: Id.Lit_Chars
                  val: 'Also make sure that command line parser understands the normal\n'
                  span_id: 20
                ) (Token id:Id.Lit_Chars val:'"flags first and then non flag arguments" command line.\n' span_id:21)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:32)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:35)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 46
          stdin_parts: [
            ('tree ')
            ($ Id.VSub_DollarName '$EMPTY_TREE')
            ('\n')
            ('author Author Name <author@email> 1117148400 +0000\n')
            ('committer Committer Name <committer@email> 1117150200 +0000\n')
            ('\n')
            ('comment text\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test preparation: write empty tree' span_id:53))} {(SQ (Token id:Id.Lit_Chars val:'git write-tree >treeid' span_id:59))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'construct commit' span_id:68))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'echo comment text |\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'     GIT_AUTHOR_NAME="Author Name" \\\n' span_id:75) (Token id:Id.Lit_Chars val:'     GIT_AUTHOR_EMAIL="author@email" \\\n' span_id:76) 
          (Token
            id: Id.Lit_Chars
            val: '     GIT_AUTHOR_DATE="2005-05-26 23:00" \\\n'
            span_id: 77
          ) (Token id:Id.Lit_Chars val:'     GIT_COMMITTER_NAME="Committer Name" \\\n' span_id:78) 
          (Token
            id: Id.Lit_Chars
            val: '     GIT_COMMITTER_EMAIL="committer@email" \\\n'
            span_id: 79
          ) (Token id:Id.Lit_Chars val:'     GIT_COMMITTER_DATE="2005-05-26 23:30" \\\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '     TZ=GMT git commit-tree $(cat treeid) >commitid 2>/dev/null'
            span_id: 81
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'read commit' span_id:90))} 
      {(SQ (Token id:Id.Lit_Chars val:'git cat-file commit $(cat commitid) >commit' span_id:96))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'compare commit' span_id:105))} 
      {(SQ (Token id:Id.Lit_Chars val:'test_cmp expected commit' span_id:111))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'flags and then non flags' span_id:119))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\techo comment text |\n' span_id:125) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit-tree $(cat treeid) >commitid &&\n'
            span_id: 126
          ) (Token id:Id.Lit_Chars val:'\techo comment text |\n' span_id:127) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit-tree $(cat treeid) -p $(cat commitid) >childid-1 &&\n'
            span_id: 128
          ) (Token id:Id.Lit_Chars val:'\techo comment text |\n' span_id:129) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit-tree -p $(cat commitid) $(cat treeid) >childid-2 &&\n'
            span_id: 130
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp childid-1 childid-2 &&\n' span_id:131) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit-tree $(cat treeid) -m foo >childid-3 &&\n'
            span_id: 132
          ) (Token id:Id.Lit_Chars val:'\tgit commit-tree -m foo $(cat treeid) >childid-4 &&\n' span_id:133) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp childid-3 childid-4\n' span_id:134)
        )
      }
    )
    (C {(test_done)})
  ]
)