(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:'rewrite diff' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:20) (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id: Id.Lit_Chars val: '\tcat "$TEST_DIRECTORY"/../COPYING >test &&\n' span_id: 22 ) (Token id:Id.Lit_Chars val:'\tgit add test &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\ttr \\\n' span_id:24) (Token id: Id.Lit_Chars val: '\t "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \\\n' span_id: 25 ) (Token id: Id.Lit_Chars val: '\t "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" \\\n' span_id: 26 ) (Token id:Id.Lit_Chars val:'\t <"$TEST_DIRECTORY"/../COPYING >test &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\techo "to be deleted" >test2 &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit add test2\n' span_id:29) (Token id:Id.Lit_Chars val:'\n' span_id:30) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'detect rewrite' span_id:37))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:41) (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id: Id.Lit_Chars val: '\tactual=$(git diff-files -B --summary test) &&\n' span_id: 43 ) (Token id:Id.Lit_Chars val:'\tverbose expr "$actual" : " rewrite test ([0-9]*%)$"\n' span_id:44) (Token id:Id.Lit_Chars val:'\n' span_id:45) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:51) fd:-1 arg_word:{(expect)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:54) fd: -1 here_begin: {(EOF)} here_end_span_id: 65 stdin_parts: [ ('diff --git a/test2 b/test2\n') ('deleted file mode 100644\n') ('index 4202011..0000000\n') ('--- a/test2\n') ('+++ /dev/null\n') ('@@ -1 +0,0 @@\n') ('-to be deleted\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'show deletion diff without -D' span_id:69))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:73) (Token id:Id.Lit_Chars val:'\n' span_id:74) (Token id:Id.Lit_Chars val:'\trm test2 &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit diff -- test2 >actual &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:77) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:83) fd:-1 arg_word:{(expect)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:86) fd: -1 here_begin: {(EOF)} here_end_span_id: 93 stdin_parts: [ ('diff --git a/test2 b/test2\n') ('deleted file mode 100644\n') ('index 4202011..0000000\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'suppress deletion diff with -D' span_id:97))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:101) (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id:Id.Lit_Chars val:'\tgit diff -D -- test2 >actual &&\n' span_id:103) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:104) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'show deletion diff with -B' span_id:111))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:115) (Token id:Id.Lit_Chars val:'\n' span_id:116) (Token id:Id.Lit_Chars val:'\tgit diff -B -- test >actual &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\tgrep "Linus Torvalds" actual\n' span_id:118) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'suppress deletion diff with -B -D' span_id:125))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:129) (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id:Id.Lit_Chars val:'\tgit diff -B -D -- test >actual &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\tgrep -v "Linus Torvalds" actual\n' span_id:132) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'prepare a file that ends with an incomplete line' span_id: 139 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:143) (Token id:Id.Lit_Chars val:'\ttest_seq 1 99 >seq &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\tprintf 100 >>seq &&\n' span_id:145) (Token id:Id.Lit_Chars val:'\tgit add seq &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\tgit commit seq -m seq\n' span_id:147) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'rewrite the middle 90% of sequence file and terminate with newline' span_id: 154 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:158) (Token id:Id.Lit_Chars val:'\ttest_seq 1 5 >seq &&\n' span_id:159) (Token id:Id.Lit_Chars val:'\ttest_seq 9331 9420 >>seq &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\ttest_seq 96 100 >>seq\n' span_id:161) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'confirm that sequence file is considered a rewrite' span_id: 168 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:172) (Token id:Id.Lit_Chars val:'\tgit diff -B seq >res &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\tgrep "dissimilarity index" res\n' span_id:174) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no newline at eof is on its own line without -B' span_id:181))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\tgit diff seq >res &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tgrep "^\\\\\\\\ " res &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\t! grep "^..*\\\\\\\\ " res\n' span_id:188) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no newline at eof is on its own line with -B' span_id:195))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:199) (Token id:Id.Lit_Chars val:'\tgit diff -B seq >res &&\n' span_id:200) (Token id:Id.Lit_Chars val:'\tgrep "^\\\\\\\\ " res &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\t! grep "^..*\\\\\\\\ " res\n' span_id:202) ) } ) (C {(test_done)}) ] )