(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git-status ignored files'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 28
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'> <'?? untracked/\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status untracked directory with --ignored'>)} 
      {
        (SQ <'\n'> <'\techo "ignored" >.gitignore &&\n'> <'\tmkdir untracked &&\n'> 
          <'\t: >untracked/ignored &&\n'> <'\t: >untracked/uncommitted &&\n'> <'\tgit status --porcelain --ignored >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'same with gitignore starting with BOM'>)} 
      {
        (SQ <'\n'> <'\tprintf "\\357\\273\\277ignored\\n" >.gitignore &&\n'> 
          <'\tmkdir -p untracked &&\n'> <'\t: >untracked/ignored &&\n'> <'\t: >untracked/uncommitted &&\n'> 
          <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 78
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'?? untracked/uncommitted\n'>
                <'!! untracked/ignored\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status untracked directory with --ignored -u'>)} 
      {
        (SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 103
              stdin_parts: [<'?? untracked/uncommitted\n'> <'!! untracked/ignored\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status prefixed untracked directory with --ignored'>)} 
      {
        (SQ <'\n'> <'\tgit status --porcelain --ignored untracked/ >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 129
              stdin_parts: [<'?? untracked/uncommitted\n'> <'!! untracked/ignored\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status prefixed untracked sub-directory with --ignored -u'>)} 
      {
        (SQ <'\n'> <'\tgit status --porcelain --ignored -u untracked/ >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 157
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'> <'!! ignored/\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status ignored directory with --ignore'>)} 
      {
        (SQ <'\n'> <'\trm -rf untracked &&\n'> <'\tmkdir ignored &&\n'> 
          <'\t: >ignored/uncommitted &&\n'> <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 188
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! ignored/uncommitted\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status ignored directory with --ignore -u'>)} 
      {
        (SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 215
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status empty untracked directory with --ignore'>)} 
      {
        (SQ <'\n'> <'\trm -rf ignored &&\n'> <'\tmkdir untracked-ignored &&\n'> 
          <'\tmkdir untracked-ignored/test &&\n'> <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 245
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status empty untracked directory with --ignore -u'>)} 
      {
        (SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 273
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! untracked-ignored/\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status untracked directory with ignored files with --ignore'>)} 
      {
        (SQ <'\n'> <'\t: >untracked-ignored/ignored &&\n'> <'\t: >untracked-ignored/test/ignored &&\n'> 
          <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 304
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! untracked-ignored/ignored\n'>
                <'!! untracked-ignored/test/ignored\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status untracked directory with ignored files with --ignore -u'>)} 
      {
        (SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 331
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status ignored tracked directory with --ignore'>)} 
      {
        (SQ <'\n'> <'\trm -rf untracked-ignored &&\n'> <'\tmkdir tracked &&\n'> 
          <'\t: >tracked/committed &&\n'> <'\tgit add tracked/committed &&\n'> <'\tgit commit -m. &&\n'> <'\techo "tracked" >.gitignore &&\n'> 
          <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 364
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'status ignored tracked directory with --ignore -u'>)} 
      {
        (SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 391
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'status ignored tracked directory and ignored file with --ignore'>)} 
      {
        (SQ <'\n'> <'\techo "committed" >>.gitignore &&\n'> 
          <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 419
              stdin_parts: [<'?? .gitignore\n'> <'?? actual\n'> <'?? expected\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'status ignored tracked directory and ignored file with --ignore -u'>)} {(SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> <'\ttest_cmp expected actual\n'>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 447
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! tracked/uncommitted\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'status ignored tracked directory and uncommitted file with --ignore'>)} 
      {
        (SQ <'\n'> <'\techo "tracked" >.gitignore &&\n'> <'\t: >tracked/uncommitted &&\n'> 
          <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 477
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! tracked/uncommitted\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {(SQ <'status ignored tracked directory and uncommitted file with --ignore -u'>)} {(SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> <'\ttest_cmp expected actual\n'>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 505
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! tracked/ignored/\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'status ignored tracked directory with uncommitted file in untracked subdir with --ignore'
          >
        )
      } 
      {
        (SQ <'\n'> <'\trm -rf tracked/uncommitted &&\n'> <'\tmkdir tracked/ignored &&\n'> 
          <'\t: >tracked/ignored/uncommitted &&\n'> <'\tgit status --porcelain --ignored >actual &&\n'> <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 536
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! tracked/ignored/uncommitted\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'status ignored tracked directory with uncommitted file in untracked subdir with --ignore -u'
          >
        )
      } {(SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> <'\ttest_cmp expected actual\n'>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 564
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! tracked/ignored/uncommitted\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <'status ignored tracked directory with uncommitted file in tracked subdir with --ignore'>
        )
      } 
      {
        (SQ <'\n'> <'\t: >tracked/ignored/committed &&\n'> 
          <'\tgit add -f tracked/ignored/committed &&\n'> <'\tgit commit -m. &&\n'> <'\tgit status --porcelain --ignored >actual &&\n'> 
          <'\ttest_cmp expected actual\n'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 595
              stdin_parts: [
                <'?? .gitignore\n'>
                <'?? actual\n'>
                <'?? expected\n'>
                <'!! tracked/ignored/uncommitted\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} 
      {
        (SQ 
          <
'status ignored tracked directory with uncommitted file in tracked subdir with --ignore -u'
          >
        )
      } {(SQ <'\n'> <'\tgit status --porcelain --ignored -u >actual &&\n'> <'\ttest_cmp expected actual\n'>)}
    )
    (C {<test_done>})
  ]
)