(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:'git status' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -h in broken repository' span_id:27))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:31) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --global advice.statusuoption false &&\n'
            span_id: 32
          ) (Token id:Id.Lit_Chars val:'\tmkdir broken &&\n' span_id:33) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -fr broken" &&\n'
            span_id: 34
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\t\tcd broken &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:37) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "[status] showuntrackedfiles = CORRUPT" >>.git/config &&\n'
            span_id: 38
          ) (Token id:Id.Lit_Chars val:'\t\ttest_expect_code 129 git status -h >usage 2>&1\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "[Uu]sage" broken/usage\n' span_id:41)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'commit -h in broken repository' span_id:48))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\tmkdir broken &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -fr broken" &&\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\tcd broken &&\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "[status] showuntrackedfiles = CORRUPT" >>.git/config &&\n'
            span_id: 58
          ) (Token id:Id.Lit_Chars val:'\t\ttest_expect_code 129 git commit -h >usage 2>&1\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "[Uu]sage" broken/usage\n' span_id:61)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:68))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\t: >tracked &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\t: >modified &&\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\tmkdir dir1 &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\t: >dir1/tracked &&\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'\t: >dir1/modified &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\tmkdir dir2 &&\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\t: >dir1/tracked &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\t: >dir1/modified &&\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\n' span_id:84) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:85) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\t: >untracked &&\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\t: >dir1/untracked &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\t: >dir2/untracked &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\techo 1 >dir1/modified &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\techo 2 >dir2/modified &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\techo 3 >dir2/added &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit add dir2/added\n' span_id:93)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status (1)' span_id:100))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "use \\"git rm --cached <file>\\.\\.\\.\\" to unstage" output\n'
            span_id: 105
          )
        )
      }
    )
    (command.ShFunction
      name: strip_comments
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tab)
                  op: assign_op.Equal
                  rhs: {(SQ (Token id:Id.Lit_Chars val:'\t' span_id:119))}
                  spids: [117]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [
                    {(sed)}
                    {
                      (DQ ('s/^') (Id.Lit_Other '\\') ('# //; s/^') (Id.Lit_Other '\\') ('#') 
                        (Id.Lit_Other '$') ('//; s/^#') ($ Id.VSub_DollarName '$tab') (/) ($ Id.VSub_DollarName '$tab') (/)
                      )
                    }
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:139)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:144)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_Number '$1')) (.tmp)}
                    )
                  ]
                )
                (C {(rm)} {(DQ ($ Id.VSub_Number '$1'))})
                (C {(mv)} {(DQ ($ Id.VSub_Number '$1')) (.tmp)} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:177)
          fd: -1
          arg_word: {(.gitignore)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:180)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:181)) 
              (OF)
            }
          here_end_span_id: 187
          stdin_parts: [('.gitignore\n') ('expect*\n') ('output*\n')]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status --column' span_id:192))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:196) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:197) (Token id:Id.Lit_Chars val:'# On branch master\n' span_id:198) 
          (Token id:Id.Lit_Chars val:'# Changes to be committed:\n' span_id:199) (Token id:Id.Lit_Chars val:'#   (use "git reset HEAD <file>..." to unstage)\n' span_id:200) 
          (Token id:Id.Lit_Chars val:'#\n' span_id:201) (Token id:Id.Lit_Chars val:'#\tnew file:   dir2/added\n' span_id:202) 
          (Token id:Id.Lit_Chars val:'#\n' span_id:203) (Token id:Id.Lit_Chars val:'# Changes not staged for commit:\n' span_id:204) 
          (Token
            id: Id.Lit_Chars
            val: '#   (use "git add <file>..." to update what will be committed)\n'
            span_id: 205
          ) 
          (Token
            id: Id.Lit_Chars
            val: '#   (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 206
          ) (Token id:Id.Lit_Chars val:'#\n' span_id:207) 
          (Token id:Id.Lit_Chars val:'#\tmodified:   dir1/modified\n' span_id:208) (Token id:Id.Lit_Chars val:'#\n' span_id:209) 
          (Token id:Id.Lit_Chars val:'# Untracked files:\n' span_id:210) 
          (Token
            id: Id.Lit_Chars
            val: '#   (use "git add <file>..." to include in what will be committed)\n'
            span_id: 211
          ) (Token id:Id.Lit_Chars val:'#\n' span_id:212) 
          (Token id:Id.Lit_Chars val:'#\tdir1/untracked dir2/untracked\n' span_id:213) (Token id:Id.Lit_Chars val:'#\tdir2/modified  untracked\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'#\n' span_id:215) (Token id:Id.Lit_Chars val:'EOF\n' span_id:216) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tCOLUMNS=50 git -c status.displayCommentPrefix=true status --column="column dense" >output &&\n'
            span_id: 217
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:218)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status --column status.displayCommentPrefix=false'
            span_id: 225
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:229) 
          (Token id:Id.Lit_Chars val:'\tstrip_comments expect &&\n' span_id:230) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tCOLUMNS=49 git -c status.displayCommentPrefix=false status --column="column dense" >output &&\n'
            span_id: 231
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:232)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:238)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:241)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:242)) 
              (OF)
            }
          here_end_span_id: 265
          stdin_parts: [
            ('# On branch master\n')
            ('# Changes to be committed:\n')
            ('#   (use "git reset HEAD <file>..." to unstage)\n')
            ('#\n')
            ('#\tnew file:   dir2/added\n')
            ('#\n')
            ('# Changes not staged for commit:\n')
            ('#   (use "git add <file>..." to update what will be committed)\n')
            ('#   (use "git checkout -- <file>..." to discard changes in working directory)\n')
            ('#\n')
            ('#\tmodified:   dir1/modified\n')
            ('#\n')
            ('# Untracked files:\n')
            ('#   (use "git add <file>..." to include in what will be committed)\n')
            ('#\n')
            ('#\tdir1/untracked\n')
            ('#\tdir2/modified\n')
            ('#\tdir2/untracked\n')
            ('#\tuntracked\n')
            ('#\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status with status.displayCommentPrefix=true' span_id:270))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.displayCommentPrefix=true status >output &&\n'
            span_id: 275
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:276)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status with status.displayCommentPrefix=false' span_id:283))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:287) 
          (Token id:Id.Lit_Chars val:'\tstrip_comments expect &&\n' span_id:288) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.displayCommentPrefix=false status >output &&\n'
            span_id: 289
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:290)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -v' span_id:297))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:301) 
          (Token
            id: Id.Lit_Chars
            val: '\t(cat expect && git diff --cached) >expect-with-v &&\n'
            span_id: 302
          ) (Token id:Id.Lit_Chars val:'\tgit status -v >output &&\n' span_id:303) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect-with-v output\n' span_id:304)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -v -v' span_id:311))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:315) 
          (Token id:Id.Lit_Chars val:'\t(cat expect &&\n' span_id:316) (Token id:Id.Lit_Chars val:'\t echo "Changes to be committed:" &&\n' span_id:317) 
          (Token
            id: Id.Lit_Chars
            val: '\t git -c diff.mnemonicprefix=true diff --cached &&\n'
            span_id: 318
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t echo "--------------------------------------------------" &&\n'
            span_id: 319
          ) (Token id:Id.Lit_Chars val:'\t echo "Changes not staged for commit:" &&\n' span_id:320) 
          (Token
            id: Id.Lit_Chars
            val: '\t git -c diff.mnemonicprefix=true diff) >expect-with-v &&\n'
            span_id: 321
          ) (Token id:Id.Lit_Chars val:'\tgit status -v -v >output &&\n' span_id:322) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect-with-v output\n' span_id:323)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup fake editor' span_id:330))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:334) 
          (Token id:Id.Lit_Chars val:'\tcat >.git/editor <<-\\EOF &&\n' span_id:335) (Token id:Id.Lit_Chars val:'\t#! /bin/sh\n' span_id:336) 
          (Token id:Id.Lit_Chars val:'\tcp "$1" output\n' span_id:337) (Token id:Id.Lit_Chars val:'EOF\n' span_id:338) 
          (Token id:Id.Lit_Chars val:'\tchmod 755 .git/editor\n' span_id:339)
        )
      }
    )
    (command.ShFunction
      name: commit_template_commented
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Subshell
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp]
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:EDITOR)
                                  op: assign_op.Equal
                                  rhs: {(.git/editor)}
                                  spids: [354]
                                )
                              ]
                            )
                            (C {(export)} {(EDITOR)})
                            (C {(test_must_fail)} {(git)} {(commit)})
                          ]
                        )
                      ]
                    )
                )
                (command.Pipeline
                  children: [
                    (C {(grep)} {(SQ (Token id:Id.Lit_Chars val:'^[^#]' span_id:388))} {(output)})
                  ]
                  negated: T
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'commit ignores status.displayCommentPrefix=false in COMMIT_EDITMSG'
            span_id: 399
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:403) 
          (Token id:Id.Lit_Chars val:'\tcommit_template_commented\n' span_id:404)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:410)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:413)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:414)) 
              (OF)
            }
          here_end_span_id: 430
          stdin_parts: [
            ('On branch master\n')
            ('Changes to be committed:\n')
            ('\tnew file:   dir2/added\n')
            ('\n')
            ('Changes not staged for commit:\n')
            ('\tmodified:   dir1/modified\n')
            ('\n')
            ('Untracked files:\n')
            ('\tdir1/untracked\n')
            ('\tdir2/modified\n')
            ('\tdir2/untracked\n')
            ('\tuntracked\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status (advice.statusHints false)' span_id:435))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:439) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config advice.statusHints false &&\n'
            span_id: 440
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:441) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:442) (Token id:Id.Lit_Chars val:'\n' span_id:443)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:449)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:452)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:453)) 
              (OF)
            }
          here_end_span_id: 462
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -s' span_id:467))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:471) (Token id:Id.Lit_Chars val:'\n' span_id:472) 
          (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:473) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:474) 
          (Token id:Id.Lit_Chars val:'\n' span_id:475)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with gitignore' span_id:482))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:486) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:487) (Token id:Id.Lit_Chars val:'\t\techo ".gitignore" &&\n' span_id:488) 
          (Token id:Id.Lit_Chars val:'\t\techo "expect*" &&\n' span_id:489) (Token id:Id.Lit_Chars val:'\t\techo "output" &&\n' span_id:490) 
          (Token id:Id.Lit_Chars val:'\t\techo "untracked"\n' span_id:491) (Token id:Id.Lit_Chars val:'\t} >.gitignore &&\n' span_id:492) 
          (Token id:Id.Lit_Chars val:'\n' span_id:493) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:494) 
          (Token id:Id.Lit_Chars val:'\t M dir1/modified\n' span_id:495) (Token id:Id.Lit_Chars val:'\tA  dir2/added\n' span_id:496) 
          (Token id:Id.Lit_Chars val:'\t?? dir2/modified\n' span_id:497) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:498) 
          (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:499) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output &&\n' span_id:500) 
          (Token id:Id.Lit_Chars val:'\n' span_id:501) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:502) 
          (Token id:Id.Lit_Chars val:'\t M dir1/modified\n' span_id:503) (Token id:Id.Lit_Chars val:'\tA  dir2/added\n' span_id:504) 
          (Token id:Id.Lit_Chars val:'\t?? dir2/modified\n' span_id:505) (Token id:Id.Lit_Chars val:'\t!! .gitignore\n' span_id:506) 
          (Token id:Id.Lit_Chars val:'\t!! dir1/untracked\n' span_id:507) (Token id:Id.Lit_Chars val:'\t!! dir2/untracked\n' span_id:508) 
          (Token id:Id.Lit_Chars val:'\t!! expect\n' span_id:509) (Token id:Id.Lit_Chars val:'\t!! expect-with-v\n' span_id:510) 
          (Token id:Id.Lit_Chars val:'\t!! output\n' span_id:511) (Token id:Id.Lit_Chars val:'\t!! untracked\n' span_id:512) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:513) (Token id:Id.Lit_Chars val:'\tgit status -s --ignored >output &&\n' span_id:514) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\n' span_id:516) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:517) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:518) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:519) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:520) 
          (Token id:Id.Lit_Chars val:'\n' span_id:521) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:522) 
          (Token id:Id.Lit_Chars val:'\n' span_id:523) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:524) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 525
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 526
          ) (Token id:Id.Lit_Chars val:'\n' span_id:527) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:528) (Token id:Id.Lit_Chars val:'\n' span_id:529) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:530) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 531
          ) (Token id:Id.Lit_Chars val:'\n' span_id:532) 
          (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:533) (Token id:Id.Lit_Chars val:'\n' span_id:534) 
          (Token id:Id.Lit_Chars val:'Ignored files:\n' span_id:535) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add -f <file>..." to include in what will be committed)\n'
            span_id: 536
          ) (Token id:Id.Lit_Chars val:'\n' span_id:537) (Token id:Id.Lit_Chars val:'\t.gitignore\n' span_id:538) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:539) (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:540) 
          (Token id:Id.Lit_Chars val:'\texpect\n' span_id:541) (Token id:Id.Lit_Chars val:'\texpect-with-v\n' span_id:542) 
          (Token id:Id.Lit_Chars val:'\toutput\n' span_id:543) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:544) (Token id:Id.Lit_Chars val:'\n' span_id:545) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:546) (Token id:Id.Lit_Chars val:'\tgit status --ignored >output &&\n' span_id:547) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:548)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status with gitignore (nothing untracked)' span_id:555))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:559) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:560) (Token id:Id.Lit_Chars val:'\t\techo ".gitignore" &&\n' span_id:561) 
          (Token id:Id.Lit_Chars val:'\t\techo "expect*" &&\n' span_id:562) (Token id:Id.Lit_Chars val:'\t\techo "dir2/modified" &&\n' span_id:563) 
          (Token id:Id.Lit_Chars val:'\t\techo "output" &&\n' span_id:564) (Token id:Id.Lit_Chars val:'\t\techo "untracked"\n' span_id:565) 
          (Token id:Id.Lit_Chars val:'\t} >.gitignore &&\n' span_id:566) (Token id:Id.Lit_Chars val:'\n' span_id:567) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:568) (Token id:Id.Lit_Chars val:'\t M dir1/modified\n' span_id:569) 
          (Token id:Id.Lit_Chars val:'\tA  dir2/added\n' span_id:570) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:571) 
          (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:572) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output &&\n' span_id:573) 
          (Token id:Id.Lit_Chars val:'\n' span_id:574) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:575) 
          (Token id:Id.Lit_Chars val:'\t M dir1/modified\n' span_id:576) (Token id:Id.Lit_Chars val:'\tA  dir2/added\n' span_id:577) 
          (Token id:Id.Lit_Chars val:'\t!! .gitignore\n' span_id:578) (Token id:Id.Lit_Chars val:'\t!! dir1/untracked\n' span_id:579) 
          (Token id:Id.Lit_Chars val:'\t!! dir2/modified\n' span_id:580) (Token id:Id.Lit_Chars val:'\t!! dir2/untracked\n' span_id:581) 
          (Token id:Id.Lit_Chars val:'\t!! expect\n' span_id:582) (Token id:Id.Lit_Chars val:'\t!! expect-with-v\n' span_id:583) 
          (Token id:Id.Lit_Chars val:'\t!! output\n' span_id:584) (Token id:Id.Lit_Chars val:'\t!! untracked\n' span_id:585) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:586) (Token id:Id.Lit_Chars val:'\tgit status -s --ignored >output &&\n' span_id:587) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output &&\n' span_id:588) (Token id:Id.Lit_Chars val:'\n' span_id:589) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:590) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:591) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:592) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:593) 
          (Token id:Id.Lit_Chars val:'\n' span_id:594) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:595) 
          (Token id:Id.Lit_Chars val:'\n' span_id:596) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:597) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 598
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 599
          ) (Token id:Id.Lit_Chars val:'\n' span_id:600) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:601) (Token id:Id.Lit_Chars val:'\n' span_id:602) 
          (Token id:Id.Lit_Chars val:'Ignored files:\n' span_id:603) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add -f <file>..." to include in what will be committed)\n'
            span_id: 604
          ) (Token id:Id.Lit_Chars val:'\n' span_id:605) (Token id:Id.Lit_Chars val:'\t.gitignore\n' span_id:606) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:607) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:608) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:609) (Token id:Id.Lit_Chars val:'\texpect\n' span_id:610) 
          (Token id:Id.Lit_Chars val:'\texpect-with-v\n' span_id:611) (Token id:Id.Lit_Chars val:'\toutput\n' span_id:612) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:613) (Token id:Id.Lit_Chars val:'\n' span_id:614) (Token id:Id.Lit_Chars val:'EOF\n' span_id:615) 
          (Token id:Id.Lit_Chars val:'\tgit status --ignored >output &&\n' span_id:616) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:617)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:623)
          fd: -1
          arg_word: {(.gitignore)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:626)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:627)) 
              (OF)
            }
          here_end_span_id: 633
          stdin_parts: [('.gitignore\n') ('expect*\n') ('output*\n')]
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:637)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:640)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:641)) 
              (OF)
            }
          here_end_span_id: 651
          stdin_parts: [
            ('## master\n')
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -s -b' span_id:656))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:660) (Token id:Id.Lit_Chars val:'\n' span_id:661) 
          (Token id:Id.Lit_Chars val:'\tgit status -s -b >output &&\n' span_id:662) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:663) 
          (Token id:Id.Lit_Chars val:'\n' span_id:664)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -s -z -b' span_id:671))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:675) 
          (Token id:Id.Lit_Chars val:'\ttr "\\\\n" Q <expect >expect.q &&\n' span_id:676) (Token id:Id.Lit_Chars val:'\tmv expect.q expect &&\n' span_id:677) 
          (Token id:Id.Lit_Chars val:'\tgit status -s -z -b >output &&\n' span_id:678) (Token id:Id.Lit_Chars val:'\tnul_to_q <output >output.q &&\n' span_id:679) 
          (Token id:Id.Lit_Chars val:'\tmv output.q output &&\n' span_id:680) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:681)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup dir3' span_id:688))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:692) 
          (Token id:Id.Lit_Chars val:'\tmkdir dir3 &&\n' span_id:693) (Token id:Id.Lit_Chars val:'\t: >dir3/untracked1 &&\n' span_id:694) 
          (Token id:Id.Lit_Chars val:'\t: >dir3/untracked2\n' span_id:695)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -uno' span_id:702))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:706) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:707) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:708) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:709) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:710) 
          (Token id:Id.Lit_Chars val:'\n' span_id:711) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:712) 
          (Token id:Id.Lit_Chars val:'\n' span_id:713) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:714) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 715
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 716
          ) (Token id:Id.Lit_Chars val:'\n' span_id:717) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:718) (Token id:Id.Lit_Chars val:'\n' span_id:719) 
          (Token
            id: Id.Lit_Chars
            val: 'Untracked files not listed (use -u option to show untracked files)\n'
            span_id: 720
          ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:721) 
          (Token id:Id.Lit_Chars val:'\tgit status -uno >output &&\n' span_id:722) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:723)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status (status.showUntrackedFiles no)' span_id:730))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:734) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config status.showuntrackedfiles no &&\n'
            span_id: 735
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:736) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:737)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -uno (advice.statusHints false)' span_id:744))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:748) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:749) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:750) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:751) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:752) 
          (Token id:Id.Lit_Chars val:'\n' span_id:753) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:754) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:755) (Token id:Id.Lit_Chars val:'\n' span_id:756) 
          (Token id:Id.Lit_Chars val:'Untracked files not listed\n' span_id:757) (Token id:Id.Lit_Chars val:'EOF\n' span_id:758) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config advice.statusHints false &&\n'
            span_id: 759
          ) (Token id:Id.Lit_Chars val:'\tgit status -uno >output &&\n' span_id:760) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:761)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:767)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:770)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 777
          stdin_parts: [(' M dir1/modified\n') ('A  dir2/added\n')]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -s -uno' span_id:781))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:785) 
          (Token id:Id.Lit_Chars val:'\tgit status -s -uno >output &&\n' span_id:786) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:787)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s (status.showUntrackedFiles no)' span_id:794))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:798) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config status.showuntrackedfiles no &&\n'
            span_id: 799
          ) (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:800) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:801)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -unormal' span_id:808))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:812) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:813) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:814) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:815) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:816) 
          (Token id:Id.Lit_Chars val:'\n' span_id:817) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:818) 
          (Token id:Id.Lit_Chars val:'\n' span_id:819) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:820) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 821
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 822
          ) (Token id:Id.Lit_Chars val:'\n' span_id:823) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:824) (Token id:Id.Lit_Chars val:'\n' span_id:825) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:826) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 827
          ) (Token id:Id.Lit_Chars val:'\n' span_id:828) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:829) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:830) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:831) (Token id:Id.Lit_Chars val:'\tdir3/\n' span_id:832) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:833) (Token id:Id.Lit_Chars val:'\n' span_id:834) (Token id:Id.Lit_Chars val:'EOF\n' span_id:835) 
          (Token id:Id.Lit_Chars val:'\tgit status -unormal >output &&\n' span_id:836) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:837)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status (status.showUntrackedFiles normal)' span_id:844))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:848) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config status.showuntrackedfiles normal &&\n'
            span_id: 849
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:850) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:851)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:857)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:860)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 871
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? dir3/\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -s -unormal' span_id:875))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:879) 
          (Token id:Id.Lit_Chars val:'\tgit status -s -unormal >output &&\n' span_id:880) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:881)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s (status.showUntrackedFiles normal)' span_id:888))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:892) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config status.showuntrackedfiles normal &&\n'
            span_id: 893
          ) (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:894) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:895)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -uall' span_id:902))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:906) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:907) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:908) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:909) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:910) 
          (Token id:Id.Lit_Chars val:'\n' span_id:911) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:912) 
          (Token id:Id.Lit_Chars val:'\n' span_id:913) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:914) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 915
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 916
          ) (Token id:Id.Lit_Chars val:'\n' span_id:917) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:918) (Token id:Id.Lit_Chars val:'\n' span_id:919) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:920) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 921
          ) (Token id:Id.Lit_Chars val:'\n' span_id:922) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:923) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:924) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:925) (Token id:Id.Lit_Chars val:'\tdir3/untracked1\n' span_id:926) 
          (Token id:Id.Lit_Chars val:'\tdir3/untracked2\n' span_id:927) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:928) (Token id:Id.Lit_Chars val:'\n' span_id:929) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:930) (Token id:Id.Lit_Chars val:'\tgit status -uall >output &&\n' span_id:931) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:932)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status (status.showUntrackedFiles all)' span_id:939))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:943) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config status.showuntrackedfiles all &&\n'
            span_id: 944
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:945) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:946)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'teardown dir3' span_id:953))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:957) 
          (Token id:Id.Lit_Chars val:'\trm -rf dir3\n' span_id:958)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:964)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:967)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 977
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -s -uall' span_id:981))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:985) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_unconfig status.showuntrackedfiles &&\n'
            span_id: 986
          ) (Token id:Id.Lit_Chars val:'\tgit status -s -uall >output &&\n' span_id:987) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:988)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s (status.showUntrackedFiles all)' span_id:994))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:998) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config status.showuntrackedfiles all &&\n'
            span_id: 999
          ) (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:1000) 
          (Token id:Id.Lit_Chars val:'\trm -rf dir3 &&\n' span_id:1001) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1002)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status with relative paths' span_id:1009))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1013) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:1014) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1015) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1016) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:1017) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1018) (Token id:Id.Lit_Chars val:'\tnew file:   ../dir2/added\n' span_id:1019) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1020) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1021) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1022
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1023
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1024) 
          (Token id:Id.Lit_Chars val:'\tmodified:   modified\n' span_id:1025) (Token id:Id.Lit_Chars val:'\n' span_id:1026) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1027) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1028
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1029) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1030) 
          (Token id:Id.Lit_Chars val:'\t../dir2/modified\n' span_id:1031) (Token id:Id.Lit_Chars val:'\t../dir2/untracked\n' span_id:1032) 
          (Token id:Id.Lit_Chars val:'\t../untracked\n' span_id:1033) (Token id:Id.Lit_Chars val:'\n' span_id:1034) (Token id:Id.Lit_Chars val:'EOF\n' span_id:1035) 
          (Token id:Id.Lit_Chars val:'\t(cd dir1 && git status) >output &&\n' span_id:1036) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1037)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1043)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1046)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1047)) 
              (OF)
            }
          here_end_span_id: 1056
          stdin_parts: [
            (' M modified\n')
            ('A  ../dir2/added\n')
            ('?? untracked\n')
            ('?? ../dir2/modified\n')
            ('?? ../dir2/untracked\n')
            ('?? ../untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s with relative paths' span_id:1060))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1064) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1065) (Token id:Id.Lit_Chars val:'\t(cd dir1 && git status -s) >output &&\n' span_id:1066) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1067) (Token id:Id.Lit_Chars val:'\n' span_id:1068)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1074)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1077)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1078)) 
              (OF)
            }
          here_end_span_id: 1087
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status --porcelain ignores relative paths setting'
            span_id: 1092
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1096) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1097) (Token id:Id.Lit_Chars val:'\t(cd dir1 && git status --porcelain) >output &&\n' span_id:1098) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1099) (Token id:Id.Lit_Chars val:'\n' span_id:1100)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup unique colors' span_id:1107))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1111) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1112) (Token id:Id.Lit_Chars val:'\tgit config status.color.untracked blue &&\n' span_id:1113) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config status.color.branch green\n'
            span_id: 1114
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1115)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with color.ui' span_id:1122))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1126) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:1127) (Token id:Id.Lit_Chars val:'On branch <GREEN>master<RESET>\n' span_id:1128) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1129) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:1130) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1131) (Token id:Id.Lit_Chars val:'\t<GREEN>new file:   dir2/added<RESET>\n' span_id:1132) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1133) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1134) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1135
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1136
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1137) 
          (Token
            id: Id.Lit_Chars
            val: '\t<RED>modified:   dir1/modified<RESET>\n'
            span_id: 1138
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1139) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1140) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1141
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1142) 
          (Token id:Id.Lit_Chars val:'\t<BLUE>dir1/untracked<RESET>\n' span_id:1143) (Token id:Id.Lit_Chars val:'\t<BLUE>dir2/modified<RESET>\n' span_id:1144) 
          (Token id:Id.Lit_Chars val:'\t<BLUE>dir2/untracked<RESET>\n' span_id:1145) (Token id:Id.Lit_Chars val:'\t<BLUE>untracked<RESET>\n' span_id:1146) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1147) (Token id:Id.Lit_Chars val:'EOF\n' span_id:1148) 
          (Token id:Id.Lit_Chars val:'\ttest_config color.ui always &&\n' span_id:1149) (Token id:Id.Lit_Chars val:'\tgit status | test_decode_color >output &&\n' span_id:1150) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1151)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status with color.status' span_id:1158))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1162) 
          (Token id:Id.Lit_Chars val:'\ttest_config color.status always &&\n' span_id:1163) (Token id:Id.Lit_Chars val:'\tgit status | test_decode_color >output &&\n' span_id:1164) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1165)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1171)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1174)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1175)) 
              (OF)
            }
          here_end_span_id: 1184
          stdin_parts: [
            (' <RED>M<RESET> dir1/modified\n')
            ('<GREEN>A<RESET>  dir2/added\n')
            ('<BLUE>??<RESET> dir1/untracked\n')
            ('<BLUE>??<RESET> dir2/modified\n')
            ('<BLUE>??<RESET> dir2/untracked\n')
            ('<BLUE>??<RESET> untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -s with color.ui' span_id:1189))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1193) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1194) (Token id:Id.Lit_Chars val:'\tgit config color.ui always &&\n' span_id:1195) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status -s | test_decode_color >output &&\n'
            span_id: 1196
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1197) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1198)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s with color.status' span_id:1205))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1209) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1210) (Token id:Id.Lit_Chars val:'\tgit config --unset color.ui &&\n' span_id:1211) 
          (Token id:Id.Lit_Chars val:'\tgit config color.status always &&\n' span_id:1212) (Token id:Id.Lit_Chars val:'\tgit status -s | test_decode_color >output &&\n' span_id:1213) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1214) (Token id:Id.Lit_Chars val:'\n' span_id:1215)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1221)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1224)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1225)) 
              (OF)
            }
          here_end_span_id: 1235
          stdin_parts: [
            ('## <GREEN>master<RESET>\n')
            (' <RED>M<RESET> dir1/modified\n')
            ('<GREEN>A<RESET>  dir2/added\n')
            ('<BLUE>??<RESET> dir1/untracked\n')
            ('<BLUE>??<RESET> dir2/modified\n')
            ('<BLUE>??<RESET> dir2/untracked\n')
            ('<BLUE>??<RESET> untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s -b with color.status' span_id:1240))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1244) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1245) (Token id:Id.Lit_Chars val:'\tgit status -s -b | test_decode_color >output &&\n' span_id:1246) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1247) (Token id:Id.Lit_Chars val:'\n' span_id:1248)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1254)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1257)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1258)) 
              (OF)
            }
          here_end_span_id: 1267
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status --porcelain ignores color.ui' span_id:1272))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1276) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1277) (Token id:Id.Lit_Chars val:'\tgit config --unset color.status &&\n' span_id:1278) 
          (Token id:Id.Lit_Chars val:'\tgit config color.ui always &&\n' span_id:1279) (Token id:Id.Lit_Chars val:'\tgit status --porcelain | test_decode_color >output &&\n' span_id:1280) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1281) (Token id:Id.Lit_Chars val:'\n' span_id:1282)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status --porcelain ignores color.status' span_id:1289))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1293) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1294) (Token id:Id.Lit_Chars val:'\tgit config --unset color.ui &&\n' span_id:1295) 
          (Token id:Id.Lit_Chars val:'\tgit config color.status always &&\n' span_id:1296) (Token id:Id.Lit_Chars val:'\tgit status --porcelain | test_decode_color >output &&\n' span_id:1297) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1298) (Token id:Id.Lit_Chars val:'\n' span_id:1299)
        )
      }
    )
    (C {(git)} {(config)} {(--unset)} {(color.status)})
    (C {(git)} {(config)} {(--unset)} {(color.ui)})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status --porcelain respects -b' span_id:1326))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1330) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1331) (Token id:Id.Lit_Chars val:'\tgit status --porcelain -b >output &&\n' span_id:1332) 
          (Token id:Id.Lit_Chars val:'\t{\n' span_id:1333) (Token id:Id.Lit_Chars val:'\t\techo "## master" &&\n' span_id:1334) 
          (Token id:Id.Lit_Chars val:'\t\tcat expect\n' span_id:1335) (Token id:Id.Lit_Chars val:'\t} >tmp &&\n' span_id:1336) 
          (Token id:Id.Lit_Chars val:'\tmv tmp expect &&\n' span_id:1337) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1338) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1339)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status without relative paths' span_id:1348))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1352) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<\\EOF &&\n' span_id:1353) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1354) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1355) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:1356) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1357) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:1358) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1359) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1360) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1361
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1362
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1363) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:1364) (Token id:Id.Lit_Chars val:'\n' span_id:1365) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1366) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1367
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1368) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:1369) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:1370) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:1371) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1372) (Token id:Id.Lit_Chars val:'\n' span_id:1373) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:1374) (Token id:Id.Lit_Chars val:'\ttest_config status.relativePaths false &&\n' span_id:1375) 
          (Token id:Id.Lit_Chars val:'\t(cd dir1 && git status) >output &&\n' span_id:1376) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1377) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1378)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1384)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1387)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1388)) 
              (OF)
            }
          here_end_span_id: 1397
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s without relative paths' span_id:1402))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1406) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1407) (Token id:Id.Lit_Chars val:'\ttest_config status.relativePaths false &&\n' span_id:1408) 
          (Token
            id: Id.Lit_Chars
            val: '\t(cd dir1 && git status -s) >output &&\n'
            span_id: 1409
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1410) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1411)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'dry-run of partial commit excluding new file in index'
            span_id: 1418
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1422) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:1423) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1424) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1425) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:1426) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1427) (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:1428) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1429) (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1430) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1431
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1432) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:1433) (Token id:Id.Lit_Chars val:'\tdir2/\n' span_id:1434) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1435) (Token id:Id.Lit_Chars val:'\n' span_id:1436) (Token id:Id.Lit_Chars val:'EOF\n' span_id:1437) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit --dry-run dir1/modified >output &&\n'
            span_id: 1438
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1439)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1445)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1448)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1455
          stdin_parts: [
            (':100644 100644 ')
            ($ Id.VSub_DollarName '$EMPTY_BLOB')
            (' 0000000000000000000000000000000000000000 M\tdir1/modified\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status refreshes the index' span_id:1459))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1463) 
          (Token id:Id.Lit_Chars val:'\ttouch dir2/added &&\n' span_id:1464) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:1465) 
          (Token id:Id.Lit_Chars val:'\tgit diff-files >output &&\n' span_id:1466) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1467)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup status submodule summary' span_id:1474))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1478) 
          (Token id:Id.Lit_Chars val:'\ttest_create_repo sm && (\n' span_id:1479) (Token id:Id.Lit_Chars val:'\t\tcd sm &&\n' span_id:1480) 
          (Token id:Id.Lit_Chars val:'\t\t>foo &&\n' span_id:1481) (Token id:Id.Lit_Chars val:'\t\tgit add foo &&\n' span_id:1482) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -m "Add foo"\n' span_id:1483) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1484) 
          (Token id:Id.Lit_Chars val:'\tgit add sm\n' span_id:1485)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status submodule summary is disabled by default'
            span_id: 1492
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1496) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:1497) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1498) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1499) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:1500) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1501) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:1502) 
          (Token id:Id.Lit_Chars val:'\tnew file:   sm\n' span_id:1503) (Token id:Id.Lit_Chars val:'\n' span_id:1504) 
          (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1505) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1506
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1507
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1508) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:1509) (Token id:Id.Lit_Chars val:'\n' span_id:1510) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1511) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1512
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1513) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:1514) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:1515) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:1516) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1517) (Token id:Id.Lit_Chars val:'\n' span_id:1518) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:1519) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:1520) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1521)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status --untracked-files=all does not show submodule'
            span_id: 1531
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1535) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --untracked-files=all >output &&\n'
            span_id: 1536
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1537)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1543)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1546)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1557
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('A  sm\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status -s submodule summary is disabled by default'
            span_id: 1561
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1565) 
          (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:1566) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1567)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status -s --untracked-files=all does not show submodule'
            span_id: 1577
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1581) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status -s --untracked-files=all >output &&\n'
            span_id: 1582
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1583)
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:head)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1588)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.AndOr
                        ops: [Id.Op_DAmp]
                        children: [
                          (C {(cd)} {(sm)})
                          (C {(git)} {(rev-parse)} {(--short) (Id.Lit_Equals '=') (7)} {(--verify)} 
                            {(HEAD)}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          spids: [1587]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status submodule summary' span_id:1612))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1616) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:1617) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1618) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1619) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:1620) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1621) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:1622) 
          (Token id:Id.Lit_Chars val:'\tnew file:   sm\n' span_id:1623) (Token id:Id.Lit_Chars val:'\n' span_id:1624) 
          (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1625) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1626
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1627
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1628) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:1629) (Token id:Id.Lit_Chars val:'\n' span_id:1630) 
          (Token id:Id.Lit_Chars val:'Submodule changes to be committed:\n' span_id:1631) (Token id:Id.Lit_Chars val:'\n' span_id:1632) 
          (Token id:Id.Lit_Chars val:'* sm 0000000...$head (1):\n' span_id:1633) (Token id:Id.Lit_Chars val:'  > Add foo\n' span_id:1634) (Token id:Id.Lit_Chars val:'\n' span_id:1635) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1636) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1637
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1638) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:1639) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:1640) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:1641) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1642) (Token id:Id.Lit_Chars val:'\n' span_id:1643) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:1644) (Token id:Id.Lit_Chars val:'\tgit config status.submodulesummary 10 &&\n' span_id:1645) 
          (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:1646) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1647)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status submodule summary with status.displayCommentPrefix=false'
            span_id: 1654
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1658) 
          (Token id:Id.Lit_Chars val:'\tstrip_comments expect &&\n' span_id:1659) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.displayCommentPrefix=false status >output &&\n'
            span_id: 1660
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1661)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'commit with submodule summary ignores status.displayCommentPrefix'
            span_id: 1668
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1672) 
          (Token id:Id.Lit_Chars val:'\tcommit_template_commented\n' span_id:1673)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1679)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1682)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1693
          stdin_parts: [
            (' M dir1/modified\n')
            ('A  dir2/added\n')
            ('A  sm\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s submodule summary' span_id:1697))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1701) 
          (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:1702) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1703)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'status submodule summary (clean submodule): commit'
            span_id: 1710
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1714) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:1715) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1716) 
          (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1717) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1718
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1719
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1720) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:1721) (Token id:Id.Lit_Chars val:'\n' span_id:1722) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1723) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1724
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1725) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:1726) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:1727) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:1728) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1729) (Token id:Id.Lit_Chars val:'\n' span_id:1730) 
          (Token
            id: Id.Lit_Chars
            val: 'no changes added to commit (use "git add" and/or "git commit -a")\n'
            span_id: 1731
          ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:1732) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "commit submodule" &&\n'
            span_id: 1733
          ) (Token id:Id.Lit_Chars val:'\tgit config status.submodulesummary 10 &&\n' span_id:1734) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git commit --dry-run >output &&\n'
            span_id: 1735
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:1736) 
          (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:1737) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1738)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1744)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1747)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1756
          stdin_parts: [
            (' M dir1/modified\n')
            ('?? dir1/untracked\n')
            ('?? dir2/modified\n')
            ('?? dir2/untracked\n')
            ('?? untracked\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -s submodule summary (clean submodule)' span_id:1760))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1764) 
          (Token id:Id.Lit_Chars val:'\tgit status -s >output &&\n' span_id:1765) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1766)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status -z implies porcelain' span_id:1773))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1777) 
          (Token id:Id.Lit_Chars val:'\tgit status --porcelain |\n' span_id:1778) (Token id:Id.Lit_Chars val:'\tperl -pe "s/\\012/\\000/g" >expect &&\n' span_id:1779) 
          (Token id:Id.Lit_Chars val:'\tgit status -z >output &&\n' span_id:1780) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:1781)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'commit --dry-run submodule summary (--amend)' span_id:1788))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1792) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<EOF &&\n' span_id:1793) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1794) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1795) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD^1 <file>..." to unstage)\n' span_id:1796) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1797) (Token id:Id.Lit_Chars val:'\tnew file:   dir2/added\n' span_id:1798) 
          (Token id:Id.Lit_Chars val:'\tnew file:   sm\n' span_id:1799) (Token id:Id.Lit_Chars val:'\n' span_id:1800) 
          (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1801) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1802
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1803
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1804) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:1805) (Token id:Id.Lit_Chars val:'\n' span_id:1806) 
          (Token id:Id.Lit_Chars val:'Submodule changes to be committed:\n' span_id:1807) (Token id:Id.Lit_Chars val:'\n' span_id:1808) 
          (Token id:Id.Lit_Chars val:'* sm 0000000...$head (1):\n' span_id:1809) (Token id:Id.Lit_Chars val:'  > Add foo\n' span_id:1810) (Token id:Id.Lit_Chars val:'\n' span_id:1811) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1812) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1813
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1814) 
          (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:1815) (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:1816) 
          (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:1817) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1818) (Token id:Id.Lit_Chars val:'\n' span_id:1819) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:1820) (Token id:Id.Lit_Chars val:'\tgit config status.submodulesummary 10 &&\n' span_id:1821) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit --dry-run --amend >output &&\n'
            span_id: 1822
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1823)
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'status succeeds in a read-only repository' span_id:1834))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1838) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1839) (Token id:Id.Lit_Chars val:'\t\tchmod a-w .git &&\n' span_id:1840) 
          (Token id:Id.Lit_Chars val:'\t\t# make dir1/tracked stat-dirty\n' span_id:1841) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t>dir1/tracked1 && mv -f dir1/tracked1 dir1/tracked &&\n'
            span_id: 1842
          ) (Token id:Id.Lit_Chars val:'\t\tgit status -s >output &&\n' span_id:1843) 
          (Token id:Id.Lit_Chars val:'\t\t! grep dir1/tracked output &&\n' span_id:1844) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# make sure "status" succeeded without writing index out\n'
            span_id: 1845
          ) (Token id:Id.Lit_Chars val:'\t\tgit diff-files | grep dir1/tracked\n' span_id:1846) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1847) (Token id:Id.Lit_Chars val:'\tstatus=$?\n' span_id:1848) 
          (Token id:Id.Lit_Chars val:'\tchmod 775 .git\n' span_id:1849) (Token id:Id.Lit_Chars val:'\t(exit $status)\n' span_id:1850)
        )
      }
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Subshell
          command_list: 
            (command.CommandList
              children: [
                (command.AndOr
                  ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
                  children: [
                    (C {(cd)} {(sm)})
                    (command.Simple
                      words: [{(echo)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:1863)
                          fd: -1
                          arg_word: {(bar)}
                        )
                      ]
                    )
                    (C {(git)} {(add)} {(bar)})
                    (C {(git)} {(commit)} {(-q)} {(-m)} 
                      {(SQ (Token id:Id.Lit_Chars val:'Add bar' span_id:1886))}
                    )
                  ]
                )
              ]
            )
        )
        (C {(git)} {(add)} {(sm)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:new_head)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1899)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.AndOr
                        ops: [Id.Op_DAmp]
                        children: [
                          (C {(cd)} {(sm)})
                          (C {(git)} {(rev-parse)} {(--short) (Id.Lit_Equals '=') (7)} {(--verify)} 
                            {(HEAD)}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          spids: [1898]
        )
      ]
    )
    (C {(touch)} {(.gitmodules)})
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--ignore-submodules=untracked suppresses submodules with untracked content'
            span_id: 1927
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1931) 
          (Token id:Id.Lit_Chars val:'\tcat > expect << EOF &&\n' span_id:1932) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:1933) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:1934) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:1935) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1936) (Token id:Id.Lit_Chars val:'\tmodified:   sm\n' span_id:1937) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1938) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:1939) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 1940
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 1941
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1942) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:1943) (Token id:Id.Lit_Chars val:'\n' span_id:1944) 
          (Token id:Id.Lit_Chars val:'Submodule changes to be committed:\n' span_id:1945) (Token id:Id.Lit_Chars val:'\n' span_id:1946) 
          (Token id:Id.Lit_Chars val:'* sm $head...$new_head (1):\n' span_id:1947) (Token id:Id.Lit_Chars val:'  > Add bar\n' span_id:1948) (Token id:Id.Lit_Chars val:'\n' span_id:1949) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:1950) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 1951
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1952) 
          (Token id:Id.Lit_Chars val:'\t.gitmodules\n' span_id:1953) (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:1954) 
          (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:1955) (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:1956) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:1957) (Token id:Id.Lit_Chars val:'\n' span_id:1958) (Token id:Id.Lit_Chars val:'EOF\n' span_id:1959) 
          (Token id:Id.Lit_Chars val:'\techo modified  sm/untracked &&\n' span_id:1960) (Token id:Id.Lit_Chars val:'\tgit status --ignore-submodules=untracked >output &&\n' span_id:1961) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:1962)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.gitmodules ignore=untracked suppresses submodules with untracked content'
            span_id: 1969
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1973) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config diff.ignoreSubmodules dirty &&\n'
            span_id: 1974
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:1975) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:1976) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore untracked &&\n'
            span_id: 1977
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 1978
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:1979) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:1980) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 1981
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.git/config ignore=untracked suppresses submodules with untracked content'
            span_id: 1988
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1992) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n'
            span_id: 1993
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 1994
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore untracked &&\n' span_id:1995) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add submodule.subname.path sm &&\n'
            span_id: 1996
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:1997) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:1998) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:1999) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --remove-section -f .gitmodules submodule.subname\n'
            span_id: 2000
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--ignore-submodules=dirty suppresses submodules with untracked content'
            span_id: 2007
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2011) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --ignore-submodules=dirty >output &&\n'
            span_id: 2012
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:2013)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.gitmodules ignore=dirty suppresses submodules with untracked content'
            span_id: 2020
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2024) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config diff.ignoreSubmodules dirty &&\n'
            span_id: 2025
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2026) 
          (Token id:Id.Lit_Chars val:'\t! test -s actual &&\n' span_id:2027) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore dirty &&\n'
            span_id: 2028
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2029
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2030) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2031) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2032
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.git/config ignore=dirty suppresses submodules with untracked content'
            span_id: 2039
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2043) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n'
            span_id: 2044
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2045
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore dirty &&\n' span_id:2046) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add submodule.subname.path sm &&\n'
            span_id: 2047
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2048) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2049) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:2050) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2051
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--ignore-submodules=dirty suppresses submodules with modified content'
            span_id: 2058
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2062) 
          (Token id:Id.Lit_Chars val:'\techo modified >sm/foo &&\n' span_id:2063) (Token id:Id.Lit_Chars val:'\tgit status --ignore-submodules=dirty >output &&\n' span_id:2064) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:2065)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.gitmodules ignore=dirty suppresses submodules with modified content'
            span_id: 2072
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2076) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore dirty &&\n'
            span_id: 2077
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2078
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2079) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2080) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2081
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.git/config ignore=dirty suppresses submodules with modified content'
            span_id: 2088
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2092) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n'
            span_id: 2093
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2094
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore dirty &&\n' span_id:2095) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add submodule.subname.path sm &&\n'
            span_id: 2096
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2097) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2098) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:2099) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2100
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(DQ ("--ignore-submodules=untracked doesn't suppress submodules with modified content"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2111) 
          (Token id:Id.Lit_Chars val:'\tcat > expect << EOF &&\n' span_id:2112) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:2113) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:2114) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:2115) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2116) (Token id:Id.Lit_Chars val:'\tmodified:   sm\n' span_id:2117) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2118) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:2119) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 2120
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 2121
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (commit or discard the untracked or modified content in submodules)\n'
            span_id: 2122
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2123) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:2124) (Token id:Id.Lit_Chars val:'\tmodified:   sm (modified content)\n' span_id:2125) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2126) (Token id:Id.Lit_Chars val:'Submodule changes to be committed:\n' span_id:2127) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2128) (Token id:Id.Lit_Chars val:'* sm $head...$new_head (1):\n' span_id:2129) 
          (Token id:Id.Lit_Chars val:'  > Add bar\n' span_id:2130) (Token id:Id.Lit_Chars val:'\n' span_id:2131) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:2132) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 2133
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2134) 
          (Token id:Id.Lit_Chars val:'\t.gitmodules\n' span_id:2135) (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:2136) 
          (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:2137) (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:2138) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:2139) (Token id:Id.Lit_Chars val:'\n' span_id:2140) (Token id:Id.Lit_Chars val:'EOF\n' span_id:2141) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --ignore-submodules=untracked > output &&\n'
            span_id: 2142
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:2143)
        )
      }
    )
    (C {(test_expect_success)} 
      {(DQ (".gitmodules ignore=untracked doesn't suppress submodules with modified content"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2154) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore untracked &&\n'
            span_id: 2155
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2156
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2157) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2158) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2159
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(DQ (".git/config ignore=untracked doesn't suppress submodules with modified content"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2170) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n'
            span_id: 2171
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2172
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore untracked &&\n' span_id:2173) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add submodule.subname.path sm &&\n'
            span_id: 2174
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2175) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2176) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:2177) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2178
          )
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:head2)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2183)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.AndOr
                        ops: [Id.Op_DAmp Id.Op_DAmp]
                        children: [
                          (C {(cd)} {(sm)})
                          (C {(git)} {(commit)} {(-q)} {(-m)} {(DQ ('2nd commit'))} {(foo)})
                          (C {(git)} {(rev-parse)} {(--short) (Id.Lit_Equals '=') (7)} {(--verify)} 
                            {(HEAD)}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          spids: [2182]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(DQ ("--ignore-submodules=untracked doesn't suppress submodule summary"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2227) 
          (Token id:Id.Lit_Chars val:'\tcat > expect << EOF &&\n' span_id:2228) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:2229) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:2230) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:2231) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2232) (Token id:Id.Lit_Chars val:'\tmodified:   sm\n' span_id:2233) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2234) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:2235) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 2236
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 2237
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2238) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:2239) (Token id:Id.Lit_Chars val:'\tmodified:   sm (new commits)\n' span_id:2240) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2241) (Token id:Id.Lit_Chars val:'Submodule changes to be committed:\n' span_id:2242) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2243) (Token id:Id.Lit_Chars val:'* sm $head...$new_head (1):\n' span_id:2244) 
          (Token id:Id.Lit_Chars val:'  > Add bar\n' span_id:2245) (Token id:Id.Lit_Chars val:'\n' span_id:2246) 
          (Token id:Id.Lit_Chars val:'Submodules changed but not updated:\n' span_id:2247) (Token id:Id.Lit_Chars val:'\n' span_id:2248) 
          (Token id:Id.Lit_Chars val:'* sm $new_head...$head2 (1):\n' span_id:2249) (Token id:Id.Lit_Chars val:'  > 2nd commit\n' span_id:2250) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2251) (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:2252) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 2253
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2254) 
          (Token id:Id.Lit_Chars val:'\t.gitmodules\n' span_id:2255) (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:2256) 
          (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:2257) (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:2258) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:2259) (Token id:Id.Lit_Chars val:'\n' span_id:2260) (Token id:Id.Lit_Chars val:'EOF\n' span_id:2261) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --ignore-submodules=untracked > output &&\n'
            span_id: 2262
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:2263)
        )
      }
    )
    (C {(test_expect_success)} 
      {(DQ (".gitmodules ignore=untracked doesn't suppress submodule summary"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2274) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore untracked &&\n'
            span_id: 2275
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2276
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2277) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2278) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2279
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(DQ (".git/config ignore=untracked doesn't suppress submodule summary"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2290) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n'
            span_id: 2291
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2292
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore untracked &&\n' span_id:2293) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add submodule.subname.path sm &&\n'
            span_id: 2294
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2295) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2296) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:2297) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2298
          )
        )
      }
    )
    (C {(test_expect_success)} {(DQ ("--ignore-submodules=dirty doesn't suppress submodule summary"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2309) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --ignore-submodules=dirty > output &&\n'
            span_id: 2310
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:2311)
        )
      }
    )
    (C {(test_expect_success)} {(DQ (".gitmodules ignore=dirty doesn't suppress submodule summary"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2321) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore dirty &&\n'
            span_id: 2322
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2323
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2324) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2325) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2326
          )
        )
      }
    )
    (C {(test_expect_success)} {(DQ (".git/config ignore=dirty doesn't suppress submodule summary"))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2337) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n'
            span_id: 2338
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2339
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore dirty &&\n' span_id:2340) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add submodule.subname.path sm &&\n'
            span_id: 2341
          ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:2342) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2343) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:2344) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2345
          )
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:2351)
          fd: -1
          arg_word: {(expect)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:2355)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 2416
          stdin_parts: [
            ('; On branch master\n')
            ('; Changes to be committed:\n')
            (';   (use ')
            (Id.Right_DoubleQuote '"')
            ('git reset HEAD <file>...')
            (Id.Right_DoubleQuote '"')
            (' to unstage)\n')
            (';\n')
            (';\tmodified:   sm\n')
            (';\n')
            ('; Changes not staged for commit:\n')
            (';   (use ')
            (Id.Right_DoubleQuote '"')
            ('git add <file>...')
            (Id.Right_DoubleQuote '"')
            (' to update what will be committed)\n')
            (';   (use ')
            (Id.Right_DoubleQuote '"')
            ('git checkout -- <file>...')
            (Id.Right_DoubleQuote '"')
            (' to discard changes in working directory)\n')
            (';\n')
            (';\tmodified:   dir1/modified\n')
            (';\tmodified:   sm (new commits)\n')
            (';\n')
            ('; Submodule changes to be committed:\n')
            (';\n')
            ('; * sm ')
            ($ Id.VSub_DollarName '$head')
            (...)
            ($ Id.VSub_DollarName '$new_head')
            (' (1):\n')
            (';   > Add bar\n')
            (';\n')
            ('; Submodules changed but not updated:\n')
            (';\n')
            ('; * sm ')
            ($ Id.VSub_DollarName '$new_head')
            (...)
            ($ Id.VSub_DollarName '$head2')
            (' (1):\n')
            (';   > 2nd commit\n')
            (';\n')
            ('; Untracked files:\n')
            (';   (use ')
            (Id.Right_DoubleQuote '"')
            ('git add <file>...')
            (Id.Right_DoubleQuote '"')
            (' to include in what will be committed)\n')
            (';\n')
            (';\t.gitmodules\n')
            (';\tdir1/untracked\n')
            (';\tdir2/modified\n')
            (';\tdir2/untracked\n')
            (';\tuntracked\n')
            (';\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(DQ ('status (core.commentchar with submodule summary)'))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2425) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config core.commentchar ";" &&\n'
            span_id: 2426
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.displayCommentPrefix=true status >output &&\n'
            span_id: 2427
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:2428)
        )
      }
    )
    (C {(test_expect_success)} 
      {(DQ ('status (core.commentchar with two chars with submodule summary)'))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2439) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_config core.commentchar ";;" &&\n'
            span_id: 2440
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git -c status.displayCommentPrefix=true status\n'
            span_id: 2441
          )
        )
      }
    )
    (C {(test_expect_success)} {(DQ ('--ignore-submodules=all suppresses submodule summary'))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2452) 
          (Token id:Id.Lit_Chars val:'\tcat > expect << EOF &&\n' span_id:2453) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:2454) 
          (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:2455) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 2456
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 2457
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2458) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:2459) (Token id:Id.Lit_Chars val:'\n' span_id:2460) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:2461) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 2462
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2463) 
          (Token id:Id.Lit_Chars val:'\t.gitmodules\n' span_id:2464) (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:2465) 
          (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:2466) (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:2467) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:2468) (Token id:Id.Lit_Chars val:'\n' span_id:2469) 
          (Token
            id: Id.Lit_Chars
            val: 'no changes added to commit (use "git add" and/or "git commit -a")\n'
            span_id: 2470
          ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:2471) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --ignore-submodules=all > output &&\n'
            span_id: 2472
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:2473)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.gitmodules ignore=all suppresses unstaged submodule summary'
            span_id: 2480
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2484) 
          (Token id:Id.Lit_Chars val:'\tcat > expect << EOF &&\n' span_id:2485) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:2486) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:2487) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:2488) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2489) (Token id:Id.Lit_Chars val:'\tmodified:   sm\n' span_id:2490) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2491) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:2492) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 2493
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 2494
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2495) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:2496) (Token id:Id.Lit_Chars val:'\n' span_id:2497) 
          (Token id:Id.Lit_Chars val:'Untracked files:\n' span_id:2498) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to include in what will be committed)\n'
            span_id: 2499
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2500) 
          (Token id:Id.Lit_Chars val:'\t.gitmodules\n' span_id:2501) (Token id:Id.Lit_Chars val:'\tdir1/untracked\n' span_id:2502) 
          (Token id:Id.Lit_Chars val:'\tdir2/modified\n' span_id:2503) (Token id:Id.Lit_Chars val:'\tdir2/untracked\n' span_id:2504) 
          (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:2505) (Token id:Id.Lit_Chars val:'\n' span_id:2506) (Token id:Id.Lit_Chars val:'EOF\n' span_id:2507) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore all &&\n'
            span_id: 2508
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2509
          ) (Token id:Id.Lit_Chars val:'\tgit status > output &&\n' span_id:2510) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2511) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2512
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '.git/config ignore=all suppresses unstaged submodule summary'
            span_id: 2519
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2523) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n'
            span_id: 2524
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2525
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore all &&\n' span_id:2526) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add submodule.subname.path sm &&\n'
            span_id: 2527
          ) (Token id:Id.Lit_Chars val:'\tgit status > output &&\n' span_id:2528) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2529) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:2530) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2531
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup of test environment' span_id:2538))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2542) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config status.showUntrackedFiles no &&\n'
            span_id: 2543
          ) (Token id:Id.Lit_Chars val:'\tgit status -s >expected_short &&\n' span_id:2544) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --no-short >expected_noshort\n'
            span_id: 2545
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.short=true" same as "-s"' span_id:2552))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2556) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.short=true status >actual &&\n'
            span_id: 2557
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected_short actual\n' span_id:2558)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.short=true" weaker than "--no-short"' span_id:2565))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2569) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.short=true status --no-short >actual &&\n'
            span_id: 2570
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected_noshort actual\n' span_id:2571)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.short=false" same as "--no-short"' span_id:2578))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2582) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.short=false status >actual &&\n'
            span_id: 2583
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected_noshort actual\n' span_id:2584)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.short=false" weaker than "-s"' span_id:2591))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2595) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.short=false status -s >actual &&\n'
            span_id: 2596
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected_short actual\n' span_id:2597)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.branch=true" same as "-b"' span_id:2604))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2608) 
          (Token id:Id.Lit_Chars val:'\tgit status -sb >expected_branch &&\n' span_id:2609) (Token id:Id.Lit_Chars val:'\tgit -c status.branch=true status -s >actual &&\n' span_id:2610) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected_branch actual\n' span_id:2611)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '"status.branch=true" different from "--no-branch"'
            span_id: 2618
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2622) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status -s --no-branch  >expected_nobranch &&\n'
            span_id: 2623
          ) (Token id:Id.Lit_Chars val:'\tgit -c status.branch=true status -s >actual &&\n' span_id:2624) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail test_cmp expected_nobranch actual\n'
            span_id: 2625
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.branch=true" weaker than "--no-branch"' span_id:2632))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2636) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.branch=true status -s --no-branch >actual &&\n'
            span_id: 2637
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected_nobranch actual\n' span_id:2638)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.branch=true" weaker than "--porcelain"' span_id:2645))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2649) 
          (Token
            id: Id.Lit_Chars
            val: '       git -c status.branch=true status --porcelain >actual &&\n'
            span_id: 2650
          ) (Token id:Id.Lit_Chars val:'       test_cmp expected_nobranch actual\n' span_id:2651)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.branch=false" same as "--no-branch"' span_id:2658))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2662) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.branch=false status -s >actual &&\n'
            span_id: 2663
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected_nobranch actual\n' span_id:2664)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'"status.branch=false" weaker than "-b"' span_id:2671))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2675) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c status.branch=false status -sb >actual &&\n'
            span_id: 2676
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected_branch actual\n' span_id:2677)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'Restore default test environment' span_id:2684))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2688) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --unset status.showUntrackedFiles\n'
            span_id: 2689
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git commit will commit a staged but ignored submodule'
            span_id: 2696
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2700) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.ignore all &&\n'
            span_id: 2701
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add -f .gitmodules submodule.subname.path sm &&\n'
            span_id: 2702
          ) (Token id:Id.Lit_Chars val:'\tgit config --add submodule.subname.ignore all &&\n' span_id:2703) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status -s --ignore-submodules=dirty >output &&\n'
            span_id: 2704
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "^M. sm" output &&\n' span_id:2705) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_EDITOR="echo hello >>\\"\\$1\\"" &&\n'
            span_id: 2706
          ) (Token id:Id.Lit_Chars val:'\texport GIT_EDITOR &&\n' span_id:2707) 
          (Token id:Id.Lit_Chars val:'\tgit commit -uno &&\n' span_id:2708) (Token id:Id.Lit_Chars val:'\tgit status -s --ignore-submodules=dirty >output &&\n' span_id:2709) 
          (Token id:Id.Lit_Chars val:'\ttest_i18ngrep ! "^M. sm" output\n' span_id:2710)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git commit --dry-run will show a staged but ignored submodule'
            span_id: 2717
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2721) 
          (Token id:Id.Lit_Chars val:'\tgit reset HEAD^ &&\n' span_id:2722) (Token id:Id.Lit_Chars val:'\tgit add sm &&\n' span_id:2723) 
          (Token id:Id.Lit_Chars val:'\tcat >expect << EOF &&\n' span_id:2724) (Token id:Id.Lit_Chars val:'On branch master\n' span_id:2725) 
          (Token id:Id.Lit_Chars val:'Changes to be committed:\n' span_id:2726) (Token id:Id.Lit_Chars val:'  (use "git reset HEAD <file>..." to unstage)\n' span_id:2727) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2728) (Token id:Id.Lit_Chars val:'\tmodified:   sm\n' span_id:2729) 
          (Token id:Id.Lit_Chars val:'\n' span_id:2730) (Token id:Id.Lit_Chars val:'Changes not staged for commit:\n' span_id:2731) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git add <file>..." to update what will be committed)\n'
            span_id: 2732
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  (use "git checkout -- <file>..." to discard changes in working directory)\n'
            span_id: 2733
          ) (Token id:Id.Lit_Chars val:'\n' span_id:2734) 
          (Token id:Id.Lit_Chars val:'\tmodified:   dir1/modified\n' span_id:2735) (Token id:Id.Lit_Chars val:'\n' span_id:2736) 
          (Token
            id: Id.Lit_Chars
            val: 'Untracked files not listed (use -u option to show untracked files)\n'
            span_id: 2737
          ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:2738) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -uno --dry-run >output &&\n'
            span_id: 2739
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output &&\n' span_id:2740) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status -s --ignore-submodules=dirty >output &&\n'
            span_id: 2741
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "^M. sm" output\n' span_id:2742)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git commit -m will commit a staged but ignored submodule'
            span_id: 2749
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2753) 
          (Token id:Id.Lit_Chars val:'\tgit commit -uno -m message &&\n' span_id:2754) (Token id:Id.Lit_Chars val:'\tgit status -s --ignore-submodules=dirty >output &&\n' span_id:2755) 
          (Token
            id: Id.Lit_Chars
            val: '\t test_i18ngrep ! "^M. sm" output &&\n'
            span_id: 2756
          ) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:2757) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config -f .gitmodules  --remove-section submodule.subname\n'
            span_id: 2758
          )
        )
      }
    )
    (C {(test_done)})
  ]
)