(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"ls-tree with(out) globs">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <"\n"> <"\tmkdir a aa \"a[a]\" &&\n"> <"\ttouch a/one aa/two \"a[a]/three\" &&\n"> 
          <"\tgit add a/one aa/two \"a[a]/three\" &&\n"> <"\tgit commit -m test\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"ls-tree a[a] matches literally">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\t100644 blob $EMPTY_BLOB\ta[a]/three\n"> <"\tEOF\n"> 
          <"\tgit ls-tree -r HEAD \"a[a]\" >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"ls-tree outside prefix">)} 
      {
        (SQ <"\n"> <"\tcat >expect <<-EOF &&\n"> <"\t100644 blob $EMPTY_BLOB\t../a[a]/three\n"> 
          <"\tEOF\n"> <"\t( cd aa && git ls-tree -r HEAD \"../a[a]\"; ) >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_failure)} {(SQ <"ls-tree does not yet support negated pathspec">)} 
      {
        (SQ <"\n"> <"\tgit ls-files \":(exclude)a\" \"a*\" >expect &&\n"> 
          <"\tgit ls-tree --name-only -r HEAD \":(exclude)a\" \"a*\" >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_done)})
  ]
)