(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:'basic ls-files tests\n' span_id:6) 
                (Token id:Id.Lit_Chars val:'\n' span_id:7) 
                (Token
                  id: Id.Lit_Chars
                  val: 'This test runs git ls-files with various unusual or malformed\n'
                  span_id: 8
                ) (Token id:Id.Lit_Chars val:'command-line arguments.\n' span_id:9)
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.Simple
      redirects: [
        (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:18) fd:-1 arg_word:{(empty)})
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'ls-files in empty repository' span_id:25))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files >actual &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual\n' span_id:31)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'ls-files with nonexistent path' span_id:38))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files doesnotexist >actual &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual\n' span_id:44)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'ls-files with nonsense option' span_id:51))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 129 git ls-files --nonsense 2>actual &&\n'
            span_id: 56
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "[Uu]sage: git ls-files" actual\n' span_id:57)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'ls-files -h in corrupt repository' span_id:64))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\tmkdir broken &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\t(\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\t\tcd broken &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\t\t>.git/index &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\t\ttest_expect_code 129 git ls-files -h >usage 2>&1\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "[Uu]sage: git ls-files " broken/usage\n' span_id:76)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'ls-files with absolute paths to symlinks' span_id:85))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\tmkdir subs &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tln -s nosuch link &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tln -s ../nosuch subs/link &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit add link subs/link &&\n' span_id:93) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit ls-files -s link subs/link >expect &&\n'
            span_id: 94
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit ls-files -s "$(pwd)/link" "$(pwd)/subs/link" >actual &&\n'
            span_id: 95
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\n' span_id:97) (Token id:Id.Lit_Chars val:'\t(\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\t\tcd subs &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\tgit ls-files -s link >../expect &&\n' span_id:100) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit ls-files -s "$(pwd)/link" >../actual\n'
            span_id: 101
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:102) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:103)
        )
      }
    )
    (C {(test_done)})
  ]
)