(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: { (SQ <'git checkout-index test.\n'> <'\n'> <'This test registers the following filesystem structure in the cache:\n'> <'\n'> <' path0/file0\t- a file in a directory\n'> <' path1/file1 - a file in a directory\n'> <'\n'> <'and attempts to check it out when the work tree has:\n'> <'\n'> <' path0/file0 - a file in a directory\n'> <' path1 - a symlink pointing at "path0"\n'> <'\n'> <'Checkout cache should fail to extract path1/file1 because the leading\n'> <'path path1 is occupied by a non-directory. With "-f" it should remove\n'> <'the symlink path1 and create directory path1 and file path1/file1.\n'> ) } spids: [13] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (command.ShFunction name: show_files body: (BraceGroup children: [ (command.Pipeline children: [ (C {<find>} {<path> <Id.Lit_QMark '?'>} {<-ls>}) (C {<sed>} {<-e>} { (SQ < 's/^[0-9]* * [0-9]* * \\([-bcdl]\\)[^ ]* *[0-9]* *[^ ]* *[^ ]* *[0-9]* [A-Z][a-z][a-z] [0-9][0-9] [^ ]* /fs: \\1 /' > ) } ) ] negated: F ) (command.Pipeline children: [ (C {<git>} {<ls-files>} {<--stage>}) (C {<sed>} {<-e>} {(SQ <'s/^\\([0-9]*\\) [0-9a-f]* [0-3] /ca: \\1 /'>)}) ] negated: F ) (command.Pipeline children: [ (C {<git>} {<ls-tree>} {<-r>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<sed>} {<-e>} {(SQ <'s/^\\([0-9]*\\)\t[^ ]*\t[0-9a-f]*\t/tr: \\1 /'>)}) ] negated: F ) ] ) ) (C {<mkdir>} {<path0>}) (command.Simple words: [{<date>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'path0/file0'>})] do_fork: T ) (C {<test_expect_success>} {(SQ <'git update-index --add path0/file0'>)} {(SQ <'git update-index --add path0/file0'>)} ) (C {<test_expect_success>} {(SQ <'writing tree out with git write-tree'>)} {(SQ <'tree1=$(git write-tree)'>)} ) (C {<test_debug>} {(SQ <'show_files $tree1'>)}) (C {<mkdir>} {<path1>}) (command.Simple words: [{<date>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'path1/file1'>})] do_fork: T ) (C {<test_expect_success>} {(SQ <'git update-index --add path1/file1'>)} {(SQ <'git update-index --add path1/file1'>)} ) (C {<test_expect_success>} {(SQ <'writing tree out with git write-tree'>)} {(SQ <'tree2=$(git write-tree)'>)} ) (C {<test_debug>} {(SQ <'show_files $tree2'>)}) (C {<rm>} {<-fr>} {<path1>}) (C {<test_expect_success>} {(SQ <'read previously written tree and checkout.'>)} {(SQ <'git read-tree -m $tree1 && git checkout-index -f -a'>)} ) (C {<test_debug>} {(SQ <'show_files $tree1'>)}) (C {<test_expect_success>} {(SQ <'add a symlink'>)} {(SQ <'test_ln_s_add path0 path1'>)}) (C {<test_expect_success>} {(SQ <'writing tree out with git write-tree'>)} {(SQ <'tree3=$(git write-tree)'>)} ) (C {<test_debug>} {(SQ <'show_files $tree3'>)}) (C {<test_expect_success>} {(SQ <'read previously written tree and checkout.'>)} {(SQ <'git read-tree $tree2 && git checkout-index -f -a'>)} ) (C {<test_debug>} {(SQ <'show_files $tree2'>)}) (C {<test_expect_success>} {(SQ <'checking out conflicting path with -f'>)} { (SQ <'test ! -h path0 && test -d path0 &&\n'> <' test ! -h path1 && test -d path1 &&\n'> <' test ! -h path0/file0 && test -f path0/file0 &&\n'> <' test ! -h path1/file1 && test -f path1/file1'> ) } ) (C {<test_done>}) ] )