(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 checkout-index --prefix test.\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16) (Token id: Id.Lit_Chars val: 'This test makes sure that --prefix option works as advertised, and\n' span_id: 17 ) (Token id: Id.Lit_Chars val: 'also verifies that such leading path may contain symlinks, unlike\n' span_id: 18 ) (Token id:Id.Lit_Chars val:'the GIT controlled paths.\n' span_id:19) ) } spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:31))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) (Token id:Id.Lit_Chars val:'\tmkdir path1 &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\techo frotz >path0 &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\techo rezrov >path1/file1 &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit update-index --add path0 path1/file1\n' span_id:39) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'have symlink in place where dir is expected.' span_id:48))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tmkdir path2 &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\tln -s path2 path1 &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\tgit checkout-index -f -a &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\ttest ! -h path1 && test -d path1 &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\ttest -f path1/file1 && test ! -f path2/file1\n' span_id:58) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'use --prefix=path2/' span_id:65))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:69) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\tmkdir path2 &&\n' span_id:71) (Token id: Id.Lit_Chars val: '\tgit checkout-index --prefix=path2/ -f -a &&\n' span_id: 72 ) (Token id:Id.Lit_Chars val:'\ttest -f path2/path0 &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\ttest -f path2/path1/file1 &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\ttest ! -f path0 &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\ttest ! -f path1/file1\n' span_id:76) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp-' span_id:83))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp- -f -a &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path0 &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path1/file1 &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\ttest ! -f path0 &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\ttest ! -f path1/file1\n' span_id:93) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'use --prefix=tmp- but with a conflicting file and dir' span_id: 100 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\techo nitfol >tmp-path1 &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\tmkdir tmp-path0 &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp- -f -a &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path0 &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path1/file1 &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\ttest ! -f path0 &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\ttest ! -f path1/file1\n' span_id:112) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp/orary/ where tmp is a symlink' span_id:121))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:125) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\tmkdir tmp1 tmp1/orary &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\tln -s tmp1 tmp &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp/orary/ -f -a &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\ttest -d tmp1/orary &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary/path0 &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary/path1/file1 &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\ttest -h tmp\n' span_id:133) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp/orary- where tmp is a symlink' span_id:142))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\tmkdir tmp1 &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\tln -s tmp1 tmp &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp/orary- -f -a &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary-path0 &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary-path1/file1 &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\ttest -h tmp\n' span_id:153) ) } ) (C {(test_expect_success)} {(SYMLINKS)} {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp- where tmp-path1 is a symlink' span_id:162))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:166) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tmkdir tmp1 &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\tln -s tmp1 tmp-path1 &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp- -f -a &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path0 &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\ttest ! -h tmp-path1 &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\ttest -d tmp-path1 &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path1/file1\n' span_id:174) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'apply filter from working tree .gitattributes with --prefix' span_id: 181 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tmkdir path1 &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\tmkdir tmp &&\n' span_id:188) (Token id: Id.Lit_Chars val: '\tgit config filter.replace-all.smudge "sed -e s/./,/g" &&\n' span_id: 189 ) (Token id:Id.Lit_Chars val:'\tgit config filter.replace-all.clean cat &&\n' span_id:190) (Token id: Id.Lit_Chars val: '\tgit config filter.replace-all.required true &&\n' span_id: 191 ) (Token id: Id.Lit_Chars val: '\techo "file1 filter=replace-all" >path1/.gitattributes &&\n' span_id: 192 ) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp/ -f -a &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\techo frotz >expected &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\ttest_cmp expected tmp/path0 &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\techo ,,,,,, >expected &&\n' span_id:196) (Token id:Id.Lit_Chars val:'\ttest_cmp expected tmp/path1/file1\n' span_id:197) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'apply CRLF filter from working tree .gitattributes with --prefix' span_id: 204 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:208) (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\tmkdir path1 &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\tmkdir tmp &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\techo "file1 eol=crlf" >path1/.gitattributes &&\n' span_id:212) (Token id: Id.Lit_Chars val: '\tgit checkout-index --prefix=tmp/ -f -a &&\n' span_id: 213 ) (Token id:Id.Lit_Chars val:'\techo rezrovQ >expected &&\n' span_id:214) (Token id: Id.Lit_Chars val: '\ttr \\\\015 Q <tmp/path1/file1 >actual &&\n' span_id: 215 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:216) ) } ) (C {(test_done)}) ] )