(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 apply in reverse\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16) ) } spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\n' span_id:31) (Token id: Id.Lit_Chars val: '\tfor i in a b c d e f g h i j k l m n; do echo $i; done >file1 &&\n' span_id: 32 ) (Token id:Id.Lit_Chars val:'\tperl -pe "y/ijk/\\\\000\\\\001\\\\002/" <file1 >file2 &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit add file1 file2 &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit tag initial &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id: Id.Lit_Chars val: '\tfor i in a b c g h i J K L m o n p q; do echo $i; done >file1 &&\n' span_id: 39 ) (Token id:Id.Lit_Chars val:'\tperl -pe "y/mon/\\\\000\\\\001\\\\002/" <file1 >file2 &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\n' span_id:41) (Token id:Id.Lit_Chars val:'\tgit commit -a -m second &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit tag second &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\n' span_id:44) (Token id: Id.Lit_Chars val: '\tgit diff --binary initial second >patch\n' span_id: 45 ) (Token id:Id.Lit_Chars val:'\n' span_id:46) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply in forward' span_id:53))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:57) (Token id:Id.Lit_Chars val:'\n' span_id:58) (Token id: Id.Lit_Chars val: '\tT0=$(git rev-parse "second^{tree}") &&\n' span_id: 59 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit apply --index --binary patch &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tT1=$(git write-tree) &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\ttest "$T0" = "$T1"\n' span_id:63) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply in reverse' span_id:70))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) (Token id:Id.Lit_Chars val:'\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit reset --hard second &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\tgit apply --reverse --binary --index patch &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\tgit diff >diff &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\ttest_cmp /dev/null diff\n' span_id:79) (Token id:Id.Lit_Chars val:'\n' span_id:80) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup separate repository lacking postimage' span_id:87))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id: Id.Lit_Chars val: '\tgit archive --format=tar --prefix=initial/ initial | $TAR xf - &&\n' span_id: 93 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:94) (Token id: Id.Lit_Chars val: '\t\tcd initial && git init && git add .\n' span_id: 95 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\n' span_id:97) (Token id: Id.Lit_Chars val: '\tgit archive --format=tar --prefix=second/ second | $TAR xf - &&\n' span_id: 98 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:99) (Token id: Id.Lit_Chars val: '\t\tcd second && git init && git add .\n' span_id: 100 ) (Token id:Id.Lit_Chars val:'\t)\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:'apply in forward without postimage' 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: '\tT0=$(git rev-parse "second^{tree}") &&\n' span_id: 115 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:116) (Token id:Id.Lit_Chars val:'\t\tcd initial &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\tgit apply --index --binary ../patch &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\t\tT1=$(git write-tree) &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\t\ttest "$T0" = "$T1"\n' span_id:120) (Token id:Id.Lit_Chars val:'\t)\n' span_id:121) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply in reverse without postimage' span_id:128))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id:Id.Lit_Chars val:'\n' span_id:133) (Token id: Id.Lit_Chars val: '\tT0=$(git rev-parse "initial^{tree}") &&\n' span_id: 134 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:135) (Token id:Id.Lit_Chars val:'\t\tcd second &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\t\tgit apply --index --binary --reverse ../patch &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\tT1=$(git write-tree) &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\ttest "$T0" = "$T1"\n' span_id:139) (Token id:Id.Lit_Chars val:'\t)\n' span_id:140) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reversing a whitespace introduction' span_id:147))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id: Id.Lit_Chars val: '\tsed "s/a/a /" < file1 > file1.new &&\n' span_id: 152 ) (Token id:Id.Lit_Chars val:'\tmv file1.new file1 &&\n' span_id:153) (Token id: Id.Lit_Chars val: '\tgit diff | git apply --reverse --whitespace=error\n' span_id: 154 ) ) } ) (C {(test_done)}) ] )