(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:'magic pathspec tests using git-add' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\tmkdir sub anothersub &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\t: >sub/foo &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\t: >anothersub/foo\n' span_id:25)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add :/' span_id:32))} 
      {
        (DQ ('\n') ('\tcat >expected <<-EOF &&\n') ("\tadd 'anothersub/foo'\n") ("\tadd 'expected'\n") 
          ("\tadd 'sub/actual'\n") ("\tadd 'sub/foo'\n") ('\tEOF\n') ('\t(cd sub && git add -n :/ >actual) &&\n') 
          ('\ttest_cmp expected sub/actual\n')
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:50)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:53)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 58
          stdin_parts: [("add 'anothersub/foo'\n")]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add :/anothersub' span_id:63))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\t(cd sub && git add -n :/anothersub >actual) &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected sub/actual\n' span_id:69)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add :/non-existent' span_id:76))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\t(cd sub && test_must_fail git add -n :/non-existent)\n'
            span_id: 81
          )
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:87)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:90)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 95
          stdin_parts: [("add 'sub/foo'\n")]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test_have_prereq)} {(Id.KW_Bang '!') (MINGW)})
                (command.Simple
                  words: [{(mkdir)} {(DQ (':'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'2>' span_id:112)
                      fd: 2
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
              ]
            )
          ]
          action: [(C {(test_set_prereq)} {(COLON_DIR)})]
          spids: [97 115]
        )
      ]
    )
    (C {(test_expect_success)} {(COLON_DIR)} 
      {(SQ (Token id:Id.Lit_Chars val:'a file with the same (long) magic name exists' span_id:130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\t: >":(icase)ha" &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\ttest_must_fail git add -n ":(icase)ha" &&\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\tgit add -n "./:(icase)ha"\n' span_id:137)
        )
      }
    )
    (C {(test_expect_success)} {(COLON_DIR)} 
      {(SQ (Token id:Id.Lit_Chars val:'a file with the same (short) magic name exists' span_id:146))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\t: >":/bar" &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\ttest_must_fail git add -n :/bar &&\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\tgit add -n "./:/bar"\n' span_id:153)
        )
      }
    )
    (C {(test_done)})
  ]
)