(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:'Rename interaction with pathspec.\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16) ) } spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.Sentence child: (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/diff-lib.sh)}) terminator: (Token id:Id.Op_Semi val:';' span_id:30) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare reference tree' span_id:38))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tmkdir path0 path1 &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tcp "$TEST_DIRECTORY"/diff-lib/COPYING path0/COPYING &&\n' span_id:44) (Token id: Id.Lit_Chars val: '\tgit update-index --add path0/COPYING &&\n' span_id: 45 ) (Token id:Id.Lit_Chars val:'\ttree=$(git write-tree) &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\techo $tree\n' span_id:47) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare work tree' span_id:54))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) (Token id:Id.Lit_Chars val:'\tcp path0/COPYING path1/COPYING &&\n' span_id:59) (Token id: Id.Lit_Chars val: '\tgit update-index --add --remove path0/COPYING path1/COPYING\n' span_id: 60 ) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:76) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:79) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:80)) (OF)} here_end_span_id: 84 stdin_parts: [ ( ':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 C100\tpath0/COPYING\tpath1/COPYING\n' ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'copy detection' span_id:89))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) (Token id: Id.Lit_Chars val: '\tgit diff-index -C --find-copies-harder $tree >current &&\n' span_id: 94 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:95) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'copy detection, cached' span_id:102))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:106) (Token id: Id.Lit_Chars val: '\tgit diff-index -C --find-copies-harder --cached $tree >current &&\n' span_id: 107 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:108) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:130) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:133) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:134)) (OF) } here_end_span_id: 138 stdin_parts: [ ( ':000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A\tpath1/COPYING\n' ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'copy, limited to a subtree' span_id:143))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:147) (Token id: Id.Lit_Chars val: '\tgit diff-index -C --find-copies-harder $tree path1 >current &&\n' span_id: 148 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:149) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tweak work tree' span_id:156))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) (Token id:Id.Lit_Chars val:'\trm -f path0/COPYING &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\tgit update-index --remove path0/COPYING\n' span_id:162) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:180) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:183) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:184)) (OF) } here_end_span_id: 188 stdin_parts: [ ( ':100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100\tpath0/COPYING\tpath1/COPYING\n' ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rename detection' span_id:193))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:197) (Token id: Id.Lit_Chars val: '\tgit diff-index -C --find-copies-harder $tree >current &&\n' span_id: 198 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:199) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:218) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:221) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:222)) (OF) } here_end_span_id: 226 stdin_parts: [ ( ':000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A\tpath1/COPYING\n' ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rename, limited to a subtree' span_id:231))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:235) (Token id: Id.Lit_Chars val: '\tgit diff-index -C --find-copies-harder $tree path1 >current &&\n' span_id: 236 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_raw current expected\n' span_id:237) ) } ) (C {(test_done)}) ] )