(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 boundary tests\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16) ) } spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:L) op: assign_op.Equal rhs: {(DQ ('c d e f g h i j k l m n o p q r s t u v w x'))} spids: [24] ) ] ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) (Token id:Id.Lit_Chars val:'\tfor i in b ' span_id:36) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:' y\n' span_id:42) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:43) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:44) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\tcat victim >original &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tgit update-index --add victim &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\t# add to the head\n' span_id:49) (Token id:Id.Lit_Chars val:'\tfor i in a b ' span_id:50) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:' y\n' span_id:56) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:58) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\tcat victim >add-a-expect &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit diff victim >add-a-patch.with &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit diff --unified=0 >add-a-patch.without &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\t# insert at line two\n' span_id:64) (Token id:Id.Lit_Chars val:'\tfor i in b a ' span_id:65) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:' y\n' span_id:71) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:72) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:73) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\tcat victim >insert-a-expect &&\n' span_id:75) (Token id: Id.Lit_Chars val: '\tgit diff victim >insert-a-patch.with &&\n' span_id: 76 ) (Token id:Id.Lit_Chars val:'\tgit diff --unified=0 >insert-a-patch.without &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id:Id.Lit_Chars val:'\t# modify at the head\n' span_id:79) (Token id:Id.Lit_Chars val:'\tfor i in a ' span_id:80) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:' y\n' span_id:86) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:88) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\tcat victim >mod-a-expect &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit diff victim >mod-a-patch.with &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit diff --unified=0 >mod-a-patch.without &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\n' span_id:93) (Token id:Id.Lit_Chars val:'\t# remove from the head\n' span_id:94) (Token id:Id.Lit_Chars val:'\tfor i in ' span_id:95) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:' y\n' span_id:101) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:102) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:103) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tcat victim >del-a-expect &&\n' span_id:105) (Token id: Id.Lit_Chars val: '\tgit diff victim >del-a-patch.with &&\n' span_id: 106 ) (Token id:Id.Lit_Chars val:'\tgit diff --unified=0 >del-a-patch.without &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\n' span_id:108) (Token id:Id.Lit_Chars val:'\t# add to the tail\n' span_id:109) (Token id:Id.Lit_Chars val:'\tfor i in b ' span_id:110) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:' y z\n' span_id:116) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:118) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\tcat victim >add-z-expect &&\n' span_id:120) (Token id: Id.Lit_Chars val: '\tgit diff victim >add-z-patch.with &&\n' span_id: 121 ) (Token id:Id.Lit_Chars val:'\tgit diff --unified=0 >add-z-patch.without &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\n' span_id:123) (Token id:Id.Lit_Chars val:'\t# modify at the tail\n' span_id:124) (Token id:Id.Lit_Chars val:'\tfor i in b ' span_id:125) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:' z\n' span_id:131) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:132) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:133) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\tcat victim >mod-z-expect &&\n' span_id:135) (Token id: Id.Lit_Chars val: '\tgit diff victim >mod-z-patch.with &&\n' span_id: 136 ) (Token id:Id.Lit_Chars val:'\tgit diff --unified=0 >mod-z-patch.without &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id:Id.Lit_Chars val:'\t# remove from the tail\n' span_id:139) (Token id:Id.Lit_Chars val:'\tfor i in b ' span_id:140) ) (DQ ($ Id.VSub_DollarName '$L')) (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:148) (Token id:Id.Lit_Chars val:'\tdone >victim &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\tcat victim >del-z-expect &&\n' span_id:150) (Token id: Id.Lit_Chars val: '\tgit diff victim >del-z-patch.with &&\n' span_id: 151 ) (Token id:Id.Lit_Chars val:'\tgit diff --unified=0 >del-z-patch.without\n' span_id:152) (Token id:Id.Lit_Chars val:'\n' span_id:153) (Token id:Id.Lit_Chars val:'\t# done\n' span_id:154) ) } ) (command.ForEach iter_name: with iter_words: [{(with)} {(without)}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$with'))} arms: [ (case_arm pat_list: [{(with)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:u) op: assign_op.Equal rhs: (word.Empty) spids: [183] ) ] ) ] spids: [180 181 185 -1] ) (case_arm pat_list: [{(without)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:u) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'--unidiff-zero ' span_id:193))} spids: [191] ) ] ) ] spids: [188 189 196 -1] ) ] ) (command.ForEach iter_name: kind iter_words: [{(add-a)} {(add-z)} {(insert-a)} {(mod-a)} {(mod-z)} {(del-a)} {(del-z)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(test_expect_success)} { (DQ ('apply ') ($ Id.VSub_DollarName '$kind') ('-patch ') ($ Id.VSub_DollarName '$with') (' context') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:237) (Token id: Id.Lit_Chars val: '\t\t\tcat original >victim &&\n' span_id: 238 ) (Token id:Id.Lit_Chars val:'\t\t\tgit update-index victim &&\n' span_id:239) (Token id: Id.Lit_Chars val: '\t\t\tgit apply --index ' span_id: 240 ) ) (DQ ($ Id.VSub_DollarName '$u') ($ Id.VSub_DollarName '$kind') (-patch.) ($ Id.VSub_DollarName '$with') ) (SQ (Token id:Id.Lit_Chars val:' &&\n' span_id:249) (Token id: Id.Lit_Chars val: '\t\t\ttest_cmp ' span_id: 250 ) ) (DQ ($ Id.VSub_DollarName '$kind')) (SQ (Token id:Id.Lit_Chars val:'-expect victim\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\t' span_id:257) ) } ) ] ) ) ] ) ) (command.ForEach iter_name: kind iter_words: [{(add-a)} {(add-z)} {(insert-a)} {(mod-a)} {(mod-z)} {(del-a)} {(del-z)}] do_arg_iter: F body: (command.DoGroup children: [ (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$kind') (-ng.without)}) (command.Simple words: [ {(sed)} {(-e)} {(DQ ('s/^diff --git /diff /'))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'/^index /d' span_id:310))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:315) fd: -1 arg_word: {($ Id.VSub_DollarName '$kind') (-patch.without)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:319) fd: -1 arg_word: {($ Id.VSub_DollarName '$kind') (-ng.without)} ) ] ) (C {(test_expect_success)} {(DQ ('apply non-git ') ($ Id.VSub_DollarName '$kind') ('-patch without context'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:333) (Token id: Id.Lit_Chars val: '\t\tcat original >victim &&\n' span_id: 334 ) (Token id:Id.Lit_Chars val:'\t\tgit update-index victim &&\n' span_id:335) (Token id: Id.Lit_Chars val: '\t\tgit apply --unidiff-zero --index ' span_id: 336 ) ) (DQ ($ Id.VSub_DollarName '$kind') (-ng.without)) (SQ (Token id:Id.Lit_Chars val:' &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ' span_id:344) ) (DQ ($ Id.VSub_DollarName '$kind')) (SQ (Token id:Id.Lit_Chars val:'-expect victim\n' span_id:350) (Token id:Id.Lit_Chars val:'\t' span_id:351) ) } ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'two lines' span_id:360))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:364) (Token id:Id.Lit_Chars val:'\n' span_id:365) (Token id:Id.Lit_Chars val:'\t>file &&\n' span_id:366) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:367) (Token id:Id.Lit_Chars val:'\techo aaa >file &&\n' span_id:368) (Token id:Id.Lit_Chars val:'\tgit diff >patch &&\n' span_id:369) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:370) (Token id:Id.Lit_Chars val:'\techo bbb >file &&\n' span_id:371) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:372) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply --check patch\n' span_id:373) (Token id:Id.Lit_Chars val:'\n' span_id:374) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'apply patch with 3 context lines matching at end' span_id: 381 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:385) (Token id: Id.Lit_Chars val: '\t{ echo a; echo b; echo c; echo d; } >file &&\n' span_id: 386 ) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:387) (Token id:Id.Lit_Chars val:'\techo e >>file &&\n' span_id:388) (Token id:Id.Lit_Chars val:'\tgit diff >patch &&\n' span_id:389) (Token id:Id.Lit_Chars val:'\t>file &&\n' span_id:390) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply patch\n' span_id:391) ) } ) (C {(test_done)}) ] )