(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 clean basic tests' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(git)} {(config)} {(clean.requireForce)} {(no)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:36))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:40) (Token id:Id.Lit_Chars val:'\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p src &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\ttouch src/part1.c Makefile &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\techo build >.gitignore &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\techo \\*.o >>.gitignore &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tgit commit -m setup &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\ttouch src/part2.c README &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit add .\n' span_id:49) (Token id:Id.Lit_Chars val:'\n' span_id:50)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean with skip-worktree .gitignore' span_id:57))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --skip-worktree .gitignore &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\trm .gitignore &&\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:64) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 65
          ) (Token id:Id.Lit_Chars val:'\tgit clean &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit update-index --no-skip-worktree .gitignore &&\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'\tgit checkout .gitignore\n' span_id:77)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean' span_id:84))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:88) (Token id:Id.Lit_Chars val:'\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:90) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 91
          ) (Token id:Id.Lit_Chars val:'\tgit clean &&\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:101) (Token id:Id.Lit_Chars val:'\n' span_id:102)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean src/' span_id:109))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:113) (Token id:Id.Lit_Chars val:'\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:115) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 116
          ) (Token id:Id.Lit_Chars val:'\tgit clean src/ &&\n' span_id:117) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:119) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:121) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:126) (Token id:Id.Lit_Chars val:'\n' span_id:127)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean src/ src/' span_id:134))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id:Id.Lit_Chars val:'\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:140) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 141
          ) (Token id:Id.Lit_Chars val:'\tgit clean src/ src/ &&\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:143) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:151) (Token id:Id.Lit_Chars val:'\n' span_id:152)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean with prefix' span_id:159))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:163) (Token id:Id.Lit_Chars val:'\n' span_id:164) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs src/test &&\n' span_id:165) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&\n'
            span_id: 166
          ) (Token id:Id.Lit_Chars val:'\t(cd src/ && git clean) &&\n' span_id:167) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:171) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:173) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/test/1.c &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:175) 
          (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:177) 
          (Token id:Id.Lit_Chars val:'\n' span_id:178)
        )
      }
    )
    (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean with relative prefix' span_id:187))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:191) (Token id:Id.Lit_Chars val:'\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:193) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 194
          ) (Token id:Id.Lit_Chars val:'\twould_clean=$(\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\t\tcd docs &&\n' span_id:196) (Token id:Id.Lit_Chars val:'\t\tgit clean -n ../src |\n' span_id:197) 
          (Token id:Id.Lit_Chars val:'\t\tsed -n -e "s|^Would remove ||p"\n' span_id:198) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:199) 
          (Token
            id: Id.Lit_Chars
            val: '\tverbose test "$would_clean" = ../src/part3.c\n'
            span_id: 200
          )
        )
      }
    )
    (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean with absolute path' span_id:209))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:215) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 216
          ) (Token id:Id.Lit_Chars val:'\twould_clean=$(\n' span_id:217) 
          (Token id:Id.Lit_Chars val:'\t\tcd docs &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\t\tgit clean -n "$(pwd)/../src" |\n' span_id:219) 
          (Token id:Id.Lit_Chars val:'\t\tsed -n -e "s|^Would remove ||p"\n' span_id:220) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:221) 
          (Token
            id: Id.Lit_Chars
            val: '\tverbose test "$would_clean" = ../src/part3.c\n'
            span_id: 222
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean with out of work tree relative path' span_id:229))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:233) (Token id:Id.Lit_Chars val:'\n' span_id:234) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:235) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 236
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:237) 
          (Token id:Id.Lit_Chars val:'\t\tcd docs &&\n' span_id:238) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git clean -n ../..\n' span_id:239) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:240)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean with out of work tree absolute path' span_id:247))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:251) (Token id:Id.Lit_Chars val:'\n' span_id:252) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:253) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 254
          ) (Token id:Id.Lit_Chars val:'\tdd=$(cd .. && pwd) &&\n' span_id:255) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\tcd docs &&\n' span_id:257) 
          (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git clean -n $dd\n' span_id:258) (Token id:Id.Lit_Chars val:'\t)\n' span_id:259)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean -d with prefix and path' span_id:266))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:270) (Token id:Id.Lit_Chars val:'\n' span_id:271) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs src/feature &&\n' span_id:272) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttouch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 273
          ) (Token id:Id.Lit_Chars val:'\t(cd src/ && git clean -d feature/) &&\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:276) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:277) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:278) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:279) (Token id:Id.Lit_Chars val:'\ttest -f src/part3.c &&\n' span_id:280) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f src/feature/file.c &&\n' span_id:281) (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:282) 
          (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:283) (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:284) 
          (Token id:Id.Lit_Chars val:'\n' span_id:285)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean symbolic link' span_id:294))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:298) (Token id:Id.Lit_Chars val:'\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:300) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 301
          ) (Token id:Id.Lit_Chars val:'\tln -s docs/manual.txt src/part4.c &&\n' span_id:302) 
          (Token id:Id.Lit_Chars val:'\tgit clean &&\n' span_id:303) (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:304) 
          (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:305) (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:306) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:307) (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:308) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:309) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part4.c &&\n' span_id:310) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:311) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:312) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:313) (Token id:Id.Lit_Chars val:'\n' span_id:314)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean with wildcard' span_id:321))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:325) (Token id:Id.Lit_Chars val:'\n' span_id:326) 
          (Token id:Id.Lit_Chars val:'\ttouch a.clean b.clean other.c &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\tgit clean "*.clean" &&\n' span_id:328) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:330) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:331) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:332) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.clean &&\n' span_id:333) (Token id:Id.Lit_Chars val:'\ttest ! -f b.clean &&\n' span_id:334) 
          (Token id:Id.Lit_Chars val:'\ttest -f other.c\n' span_id:335) (Token id:Id.Lit_Chars val:'\n' span_id:336)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean -n' span_id:343))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:347) (Token id:Id.Lit_Chars val:'\n' span_id:348) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:349) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 350
          ) (Token id:Id.Lit_Chars val:'\tgit clean -n &&\n' span_id:351) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:352) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:353) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:354) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:355) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:356) (Token id:Id.Lit_Chars val:'\ttest -f src/part3.c &&\n' span_id:357) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:358) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:359) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:360) (Token id:Id.Lit_Chars val:'\n' span_id:361)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean -d' span_id:368))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:372) (Token id:Id.Lit_Chars val:'\n' span_id:373) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:374) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 375
          ) (Token id:Id.Lit_Chars val:'\tgit clean -d &&\n' span_id:376) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:377) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:378) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:379) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:380) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:381) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:382) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d docs &&\n' span_id:383) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:384) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:385) (Token id:Id.Lit_Chars val:'\n' span_id:386)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean -d src/ examples/' span_id:393))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:397) (Token id:Id.Lit_Chars val:'\n' span_id:398) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs examples &&\n' span_id:399) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&\n'
            span_id: 400
          ) (Token id:Id.Lit_Chars val:'\tgit clean -d src/ examples/ &&\n' span_id:401) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:402) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:403) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:404) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:405) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:406) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:407) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f examples/1.c &&\n' span_id:408) (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:409) 
          (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:410) (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:411) 
          (Token id:Id.Lit_Chars val:'\n' span_id:412)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean -x' span_id:419))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:423) (Token id:Id.Lit_Chars val:'\n' span_id:424) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:425) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 426
          ) (Token id:Id.Lit_Chars val:'\tgit clean -x &&\n' span_id:427) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:428) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:429) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:430) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:431) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:432) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:433) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:434) (Token id:Id.Lit_Chars val:'\ttest ! -f obj.o &&\n' span_id:435) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:436) (Token id:Id.Lit_Chars val:'\n' span_id:437)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean -d -x' span_id:444))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:448) (Token id:Id.Lit_Chars val:'\n' span_id:449) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:450) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 451
          ) (Token id:Id.Lit_Chars val:'\tgit clean -d -x &&\n' span_id:452) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:453) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:454) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:455) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:456) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:457) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:458) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d docs &&\n' span_id:459) (Token id:Id.Lit_Chars val:'\ttest ! -f obj.o &&\n' span_id:460) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d build\n' span_id:461) (Token id:Id.Lit_Chars val:'\n' span_id:462)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean -d -x with ignored tracked directory' span_id:469))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:473) (Token id:Id.Lit_Chars val:'\n' span_id:474) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:475) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 476
          ) (Token id:Id.Lit_Chars val:'\tgit clean -d -x -e src &&\n' span_id:477) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:479) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:480) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:481) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\ttest -f src/part3.c &&\n' span_id:483) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d docs &&\n' span_id:484) (Token id:Id.Lit_Chars val:'\ttest ! -f obj.o &&\n' span_id:485) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d build\n' span_id:486) (Token id:Id.Lit_Chars val:'\n' span_id:487)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean -X' span_id:494))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:498) (Token id:Id.Lit_Chars val:'\n' span_id:499) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:500) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 501
          ) (Token id:Id.Lit_Chars val:'\tgit clean -X &&\n' span_id:502) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:503) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:504) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:505) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:506) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:507) (Token id:Id.Lit_Chars val:'\ttest -f src/part3.c &&\n' span_id:508) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:509) (Token id:Id.Lit_Chars val:'\ttest ! -f obj.o &&\n' span_id:510) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:511) (Token id:Id.Lit_Chars val:'\n' span_id:512)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean -d -X' span_id:519))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:523) (Token id:Id.Lit_Chars val:'\n' span_id:524) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:525) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 526
          ) (Token id:Id.Lit_Chars val:'\tgit clean -d -X &&\n' span_id:527) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:528) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:529) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:530) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:531) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:532) (Token id:Id.Lit_Chars val:'\ttest -f src/part3.c &&\n' span_id:533) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:534) (Token id:Id.Lit_Chars val:'\ttest ! -f obj.o &&\n' span_id:535) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d build\n' span_id:536) (Token id:Id.Lit_Chars val:'\n' span_id:537)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git clean -d -X with ignored tracked directory' span_id:544))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:548) (Token id:Id.Lit_Chars val:'\n' span_id:549) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:550) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 551
          ) (Token id:Id.Lit_Chars val:'\tgit clean -d -X -e src &&\n' span_id:552) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:553) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:554) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:555) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:556) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:557) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:558) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:559) (Token id:Id.Lit_Chars val:'\ttest ! -f obj.o &&\n' span_id:560) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d build\n' span_id:561) (Token id:Id.Lit_Chars val:'\n' span_id:562)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clean.requireForce defaults to true' span_id:569))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:573) (Token id:Id.Lit_Chars val:'\n' span_id:574) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --unset clean.requireForce &&\n'
            span_id: 575
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git clean\n' span_id:576) 
          (Token id:Id.Lit_Chars val:'\n' span_id:577)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:clean.requireForce span_id:584))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:588) (Token id:Id.Lit_Chars val:'\n' span_id:589) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config clean.requireForce true &&\n'
            span_id: 590
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git clean\n' span_id:591) 
          (Token id:Id.Lit_Chars val:'\n' span_id:592)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clean.requireForce and -n' span_id:599))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:603) (Token id:Id.Lit_Chars val:'\n' span_id:604) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p build docs &&\n' span_id:605) 
          (Token
            id: Id.Lit_Chars
            val: '\ttouch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&\n'
            span_id: 606
          ) (Token id:Id.Lit_Chars val:'\tgit clean -n &&\n' span_id:607) 
          (Token id:Id.Lit_Chars val:'\ttest -f Makefile &&\n' span_id:608) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:609) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:610) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:611) 
          (Token id:Id.Lit_Chars val:'\ttest -f a.out &&\n' span_id:612) (Token id:Id.Lit_Chars val:'\ttest -f src/part3.c &&\n' span_id:613) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:614) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:615) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:616) (Token id:Id.Lit_Chars val:'\n' span_id:617)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clean.requireForce and -f' span_id:624))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:628) (Token id:Id.Lit_Chars val:'\n' span_id:629) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:630) (Token id:Id.Lit_Chars val:'\ttest -f README &&\n' span_id:631) 
          (Token id:Id.Lit_Chars val:'\ttest -f src/part1.c &&\n' span_id:632) (Token id:Id.Lit_Chars val:'\ttest -f src/part2.c &&\n' span_id:633) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f a.out &&\n' span_id:634) (Token id:Id.Lit_Chars val:'\ttest ! -f src/part3.c &&\n' span_id:635) 
          (Token id:Id.Lit_Chars val:'\ttest -f docs/manual.txt &&\n' span_id:636) (Token id:Id.Lit_Chars val:'\ttest -f obj.o &&\n' span_id:637) 
          (Token id:Id.Lit_Chars val:'\ttest -f build/lib.so\n' span_id:638) (Token id:Id.Lit_Chars val:'\n' span_id:639)
        )
      }
    )
    (C {(test_expect_success)} {(C_LOCALE_OUTPUT)} 
      {(SQ (Token id:Id.Lit_Chars val:core.excludesfile span_id:648))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:652) (Token id:Id.Lit_Chars val:'\n' span_id:653) 
          (Token id:Id.Lit_Chars val:'\techo excludes >excludes &&\n' span_id:654) (Token id:Id.Lit_Chars val:'\techo included >included &&\n' span_id:655) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config core.excludesfile excludes &&\n'
            span_id: 656
          ) (Token id:Id.Lit_Chars val:'\toutput=$(git clean -n excludes included 2>&1) &&\n' span_id:657) 
          (Token
            id: Id.Lit_Chars
            val: '\texpr "$output" : ".*included" >/dev/null &&\n'
            span_id: 658
          ) (Token id:Id.Lit_Chars val:'\t! expr "$output" : ".*excludes" >/dev/null\n' span_id:659) 
          (Token id:Id.Lit_Chars val:'\n' span_id:660)
        )
      }
    )
    (C {(test_expect_success)} {(SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'removal failure' span_id:669))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:673) (Token id:Id.Lit_Chars val:'\n' span_id:674) 
          (Token id:Id.Lit_Chars val:'\tmkdir foo &&\n' span_id:675) (Token id:Id.Lit_Chars val:'\ttouch foo/bar &&\n' span_id:676) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "chmod 755 foo" &&\n'
            span_id: 677
          ) (Token id:Id.Lit_Chars val:'\t(exec <foo/bar &&\n' span_id:678) 
          (Token id:Id.Lit_Chars val:'\t chmod 0 foo &&\n' span_id:679) (Token id:Id.Lit_Chars val:'\t test_must_fail git clean -f -d)\n' span_id:680)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'nested git work tree' span_id:687))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:691) 
          (Token id:Id.Lit_Chars val:'\trm -fr foo bar baz &&\n' span_id:692) (Token id:Id.Lit_Chars val:'\tmkdir -p foo bar baz/boo &&\n' span_id:693) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:694) (Token id:Id.Lit_Chars val:'\t\tcd foo &&\n' span_id:695) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:696) (Token id:Id.Lit_Chars val:'\t\ttest_commit nested hello.world\n' span_id:697) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:698) (Token id:Id.Lit_Chars val:'\t(\n' span_id:699) 
          (Token id:Id.Lit_Chars val:'\t\tcd bar &&\n' span_id:700) (Token id:Id.Lit_Chars val:'\t\t>goodbye.people\n' span_id:701) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:702) (Token id:Id.Lit_Chars val:'\t(\n' span_id:703) 
          (Token id:Id.Lit_Chars val:'\t\tcd baz/boo &&\n' span_id:704) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:705) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_commit deeply.nested deeper.world\n'
            span_id: 706
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:707) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:708) (Token id:Id.Lit_Chars val:'\ttest -f foo/.git/index &&\n' span_id:709) 
          (Token id:Id.Lit_Chars val:'\ttest -f foo/hello.world &&\n' span_id:710) (Token id:Id.Lit_Chars val:'\ttest -f baz/boo/.git/index &&\n' span_id:711) 
          (Token id:Id.Lit_Chars val:'\ttest -f baz/boo/deeper.world &&\n' span_id:712) (Token id:Id.Lit_Chars val:'\t! test -d bar\n' span_id:713)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'should clean things that almost look like git but are not'
            span_id: 720
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:724) 
          (Token
            id: Id.Lit_Chars
            val: '\trm -fr almost_git almost_bare_git almost_submodule &&\n'
            span_id: 725
          ) (Token id:Id.Lit_Chars val:'\tmkdir -p almost_git/.git/objects &&\n' span_id:726) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p almost_git/.git/refs &&\n' span_id:727) (Token id:Id.Lit_Chars val:'\tcat >almost_git/.git/HEAD <<-\\EOF &&\n' span_id:728) 
          (Token id:Id.Lit_Chars val:'\tgarbage\n' span_id:729) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:730) 
          (Token
            id: Id.Lit_Chars
            val: '\tcp -r almost_git/.git/ almost_bare_git &&\n'
            span_id: 731
          ) (Token id:Id.Lit_Chars val:'\tmkdir almost_submodule/ &&\n' span_id:732) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat >almost_submodule/.git <<-\\EOF &&\n'
            span_id: 733
          ) (Token id:Id.Lit_Chars val:'\tgarbage\n' span_id:734) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:735) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -rf almost_*" &&\n' span_id:736) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:737) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing almost_git &&\n' span_id:738) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_missing almost_bare_git &&\n'
            span_id: 739
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing almost_submodule\n' span_id:740)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'should not clean submodules' span_id:747))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:751) 
          (Token id:Id.Lit_Chars val:'\trm -fr repo to_clean sub1 sub2 &&\n' span_id:752) (Token id:Id.Lit_Chars val:'\tmkdir repo to_clean &&\n' span_id:753) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:754) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:755) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:756) (Token id:Id.Lit_Chars val:'\t\ttest_commit msg hello.world\n' span_id:757) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:758) (Token id:Id.Lit_Chars val:'\tgit submodule add ./repo/.git sub1 &&\n' span_id:759) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "sub1" &&\n' span_id:760) (Token id:Id.Lit_Chars val:'\tgit branch before_sub2 &&\n' span_id:761) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit submodule add ./repo/.git sub2 &&\n'
            span_id: 762
          ) (Token id:Id.Lit_Chars val:'\tgit commit -m "sub2" &&\n' span_id:763) 
          (Token id:Id.Lit_Chars val:'\tgit checkout before_sub2 &&\n' span_id:764) (Token id:Id.Lit_Chars val:'\t>to_clean/should_clean.this &&\n' span_id:765) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:766) (Token id:Id.Lit_Chars val:'\ttest_path_is_file repo/.git/index &&\n' span_id:767) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_file repo/hello.world &&\n'
            span_id: 768
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_file sub1/.git &&\n' span_id:769) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_file sub1/hello.world &&\n'
            span_id: 770
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_file sub2/.git &&\n' span_id:771) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_file sub2/hello.world &&\n'
            span_id: 772
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing to_clean\n' span_id:773)
        )
      }
    )
    (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} 
      {(SQ (Token id:Id.Lit_Chars val:'should avoid cleaning possible submodules' span_id:784))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:788) 
          (Token id:Id.Lit_Chars val:'\trm -fr to_clean possible_sub1 &&\n' span_id:789) (Token id:Id.Lit_Chars val:'\tmkdir to_clean possible_sub1 &&\n' span_id:790) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -rf possible_sub*" &&\n'
            span_id: 791
          ) (Token id:Id.Lit_Chars val:'\techo "gitdir: foo" >possible_sub1/.git &&\n' span_id:792) 
          (Token id:Id.Lit_Chars val:'\t>possible_sub1/hello.world &&\n' span_id:793) (Token id:Id.Lit_Chars val:'\tchmod 0 possible_sub1/.git &&\n' span_id:794) 
          (Token id:Id.Lit_Chars val:'\t>to_clean/should_clean.this &&\n' span_id:795) (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:796) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_file possible_sub1/.git &&\n'
            span_id: 797
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_file possible_sub1/hello.world &&\n' span_id:798) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing to_clean\n' span_id:799)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'nested (empty) git should be kept' span_id:806))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:810) 
          (Token id:Id.Lit_Chars val:'\trm -fr empty_repo to_clean &&\n' span_id:811) (Token id:Id.Lit_Chars val:'\tgit init empty_repo &&\n' span_id:812) 
          (Token id:Id.Lit_Chars val:'\tmkdir to_clean &&\n' span_id:813) (Token id:Id.Lit_Chars val:'\t>to_clean/should_clean.this &&\n' span_id:814) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:815) (Token id:Id.Lit_Chars val:'\ttest_path_is_file empty_repo/.git/HEAD &&\n' span_id:816) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing to_clean\n' span_id:817)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'nested bare repositories should be cleaned' span_id:824))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:828) 
          (Token id:Id.Lit_Chars val:'\trm -fr bare1 bare2 subdir &&\n' span_id:829) (Token id:Id.Lit_Chars val:'\tgit init --bare bare1 &&\n' span_id:830) 
          (Token id:Id.Lit_Chars val:'\tgit clone --local --bare . bare2 &&\n' span_id:831) (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:832) 
          (Token id:Id.Lit_Chars val:'\tcp -r bare2 subdir/bare3 &&\n' span_id:833) (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:834) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing bare1 &&\n' span_id:835) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing bare2 &&\n' span_id:836) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing subdir\n' span_id:837)
        )
      }
    )
    (C {(test_expect_failure)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'nested (empty) bare repositories should be cleaned even when in .git'
            span_id: 844
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:848) 
          (Token id:Id.Lit_Chars val:'\trm -fr strange_bare &&\n' span_id:849) (Token id:Id.Lit_Chars val:'\tmkdir strange_bare &&\n' span_id:850) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit init --bare strange_bare/.git &&\n'
            span_id: 851
          ) (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:852) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing strange_bare\n' span_id:853)
        )
      }
    )
    (C {(test_expect_failure)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'nested (non-empty) bare repositories should be cleaned even when in .git'
            span_id: 860
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:864) 
          (Token id:Id.Lit_Chars val:'\trm -fr strange_bare &&\n' span_id:865) (Token id:Id.Lit_Chars val:'\tmkdir strange_bare &&\n' span_id:866) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --local --bare . strange_bare/.git &&\n'
            span_id: 867
          ) (Token id:Id.Lit_Chars val:'\tgit clean -f -d &&\n' span_id:868) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing strange_bare\n' span_id:869)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'giving path in nested git work tree will remove it'
            span_id: 876
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:880) 
          (Token id:Id.Lit_Chars val:'\trm -fr repo &&\n' span_id:881) (Token id:Id.Lit_Chars val:'\tmkdir repo &&\n' span_id:882) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:883) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:884) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:885) (Token id:Id.Lit_Chars val:'\t\tmkdir -p bar/baz &&\n' span_id:886) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_commit msg bar/baz/hello.world\n'
            span_id: 887
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:888) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f -d repo/bar/baz &&\n' span_id:889) (Token id:Id.Lit_Chars val:'\ttest_path_is_file repo/.git/HEAD &&\n' span_id:890) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir repo/bar/ &&\n' span_id:891) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing repo/bar/baz\n' span_id:892)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'giving path to nested .git will not remove it' span_id:899))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:903) 
          (Token id:Id.Lit_Chars val:'\trm -fr repo &&\n' span_id:904) (Token id:Id.Lit_Chars val:'\tmkdir repo untracked &&\n' span_id:905) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:906) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:907) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:908) (Token id:Id.Lit_Chars val:'\t\ttest_commit msg hello.world\n' span_id:909) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:910) (Token id:Id.Lit_Chars val:'\tgit clean -f -d repo/.git &&\n' span_id:911) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file repo/.git/HEAD &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir repo/.git/refs &&\n' span_id:913) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir repo/.git/objects &&\n'
            span_id: 914
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir untracked/\n' span_id:915)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'giving path to nested .git/ will remove contents'
            span_id: 922
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:926) 
          (Token id:Id.Lit_Chars val:'\trm -fr repo untracked &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\tmkdir repo untracked &&\n' span_id:928) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:929) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:930) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:931) (Token id:Id.Lit_Chars val:'\t\ttest_commit msg hello.world\n' span_id:932) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit clean -f -d repo/.git/ &&\n' span_id:934) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir repo/.git &&\n' span_id:935) (Token id:Id.Lit_Chars val:'\ttest_dir_is_empty repo/.git &&\n' span_id:936) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir untracked/\n' span_id:937)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'force removal of nested git work tree' span_id:944))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:948) 
          (Token id:Id.Lit_Chars val:'\trm -fr foo bar baz &&\n' span_id:949) (Token id:Id.Lit_Chars val:'\tmkdir -p foo bar baz/boo &&\n' span_id:950) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:951) (Token id:Id.Lit_Chars val:'\t\tcd foo &&\n' span_id:952) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:953) (Token id:Id.Lit_Chars val:'\t\ttest_commit nested hello.world\n' span_id:954) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:955) (Token id:Id.Lit_Chars val:'\t(\n' span_id:956) 
          (Token id:Id.Lit_Chars val:'\t\tcd bar &&\n' span_id:957) (Token id:Id.Lit_Chars val:'\t\t>goodbye.people\n' span_id:958) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:959) (Token id:Id.Lit_Chars val:'\t(\n' span_id:960) 
          (Token id:Id.Lit_Chars val:'\t\tcd baz/boo &&\n' span_id:961) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:962) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_commit deeply.nested deeper.world\n'
            span_id: 963
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:964) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f -f -d &&\n' span_id:965) (Token id:Id.Lit_Chars val:'\t! test -d foo &&\n' span_id:966) 
          (Token id:Id.Lit_Chars val:'\t! test -d bar &&\n' span_id:967) (Token id:Id.Lit_Chars val:'\t! test -d baz\n' span_id:968)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git clean -e' span_id:975))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:979) 
          (Token id:Id.Lit_Chars val:'\trm -fr repo &&\n' span_id:980) (Token id:Id.Lit_Chars val:'\tmkdir repo &&\n' span_id:981) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:982) (Token id:Id.Lit_Chars val:'\t\tcd repo &&\n' span_id:983) 
          (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:984) (Token id:Id.Lit_Chars val:'\t\ttouch known 1 2 3 &&\n' span_id:985) 
          (Token id:Id.Lit_Chars val:'\t\tgit add known &&\n' span_id:986) (Token id:Id.Lit_Chars val:'\t\tgit clean -f -e 1 -e 2 &&\n' span_id:987) 
          (Token id:Id.Lit_Chars val:'\t\ttest -e 1 &&\n' span_id:988) (Token id:Id.Lit_Chars val:'\t\ttest -e 2 &&\n' span_id:989) 
          (Token id:Id.Lit_Chars val:'\t\t! (test -e 3) &&\n' span_id:990) (Token id:Id.Lit_Chars val:'\t\ttest -e known\n' span_id:991) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:992)
        )
      }
    )
    (C {(test_expect_success)} {(SANITY)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git clean -d with an unreadable empty directory'
            span_id: 1001
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1005) 
          (Token id:Id.Lit_Chars val:'\tmkdir foo &&\n' span_id:1006) (Token id:Id.Lit_Chars val:'\tchmod a= foo &&\n' span_id:1007) 
          (Token id:Id.Lit_Chars val:'\tgit clean -dfx foo &&\n' span_id:1008) (Token id:Id.Lit_Chars val:'\t! test -d foo\n' span_id:1009)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git clean -d respects pathspecs (dir is prefix of pathspec)'
            span_id: 1016
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1020) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p foo &&\n' span_id:1021) (Token id:Id.Lit_Chars val:'\tmkdir -p foobar &&\n' span_id:1022) 
          (Token id:Id.Lit_Chars val:'\tgit clean -df foobar &&\n' span_id:1023) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir foo &&\n' span_id:1024) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_missing foobar\n' span_id:1025)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git clean -d respects pathspecs (pathspec is prefix of dir)'
            span_id: 1032
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1036) 
          (Token id:Id.Lit_Chars val:'\tmkdir -p foo &&\n' span_id:1037) (Token id:Id.Lit_Chars val:'\tmkdir -p foobar &&\n' span_id:1038) 
          (Token id:Id.Lit_Chars val:'\tgit clean -df foo &&\n' span_id:1039) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing foo &&\n' span_id:1040) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_dir foobar\n' span_id:1041)
        )
      }
    )
    (C {(test_done)})
  ]
)