(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: 
            {
              (SQ <'ls-files tests with relative paths\n'> <'\n'> 
                <'This test runs git ls-files with various relative path arguments.\n'>
              )
            }
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:new_line) op:Equal rhs:{(SQ <'\n'>)} spids:[17])]
      spids: [17]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:sq)
          op: Equal
          rhs: {(EscapedLiteralPart token:<Lit_EscapedChar "\\'">)}
          spids: [22]
        )
      ]
      spids: [22]
    )
    (C {(test_expect_success)} {(SQ <prepare>)} 
      {
        (SQ <'\n'> <'\t: >never-mind-me &&\n'> <'\tgit add never-mind-me &&\n'> <'\tmkdir top &&\n'> 
          <'\t(\n'> <'\t\tcd top &&\n'> <'\t\tmkdir sub &&\n'> <'\t\tx="x xa xbc xdef xghij xklmno" &&\n'> 
          <'\t\ty=$(echo "$x" | tr x y) &&\n'> <'\t\ttouch $x &&\n'> <'\t\ttouch $y &&\n'> <'\t\tcd sub &&\n'> <'\t\tgit add ../x*\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'ls-files with mixed levels'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\t\tcd top/sub &&\n'> <'\t\tcat >expect <<-EOF &&\n'> 
          <'\t\t../../never-mind-me\n'> <'\t\t../x\n'> <'\t\tEOF\n'> <'\t\tgit ls-files $(cat expect) >actual &&\n'> 
          <'\t\ttest_cmp expect actual\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'ls-files -c'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\t\tcd top/sub &&\n'> <'\t\tfor f in ../y*\n'> <'\t\tdo\n'> 
          <'\t\t\techo "error: pathspec $sq$f$sq did not match any file(s) known to git."\n'> <'\t\tdone >expect.err &&\n'> <'\t\techo "Did you forget to ${sq}git add${sq}?" >>expect.err &&\n'> 
          <'\t\tls ../x* >expect.out &&\n'> <'\t\ttest_must_fail git ls-files -c --error-unmatch ../[xy]* >actual.out 2>actual.err &&\n'> 
          <'\t\ttest_cmp expect.out actual.out &&\n'> <'\t\ttest_cmp expect.err actual.err\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'ls-files -o'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\t\tcd top/sub &&\n'> <'\t\tfor f in ../x*\n'> <'\t\tdo\n'> 
          <'\t\t\techo "error: pathspec $sq$f$sq did not match any file(s) known to git."\n'> <'\t\tdone >expect.err &&\n'> <'\t\techo "Did you forget to ${sq}git add${sq}?" >>expect.err &&\n'> 
          <'\t\tls ../y* >expect.out &&\n'> <'\t\ttest_must_fail git ls-files -o --error-unmatch ../[xy]* >actual.out 2>actual.err &&\n'> 
          <'\t\ttest_cmp expect.out actual.out &&\n'> <'\t\ttest_cmp expect.err actual.err\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)