(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:'apply with fuzz and offset' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: dotest body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:name) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [23] ) ] ) (C {(shift)}) (C {(test_expect_success)} {(DQ ($ Id.VSub_DollarName '$name'))} { (DQ ('\n') ('\t\tgit checkout-index -f -q -u file &&\n') ('\t\tgit apply ') ($ Id.VSub_Star '$*') (' &&\n') ('\t\ttest_cmp expect file\n') ('\t') ) } ) ] ) ] ) ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\n' span_id:60) (Token id:Id.Lit_Chars val:'\tfor i in 1 2 3 4 5 6 7 8 9 10 11 12\n' span_id:61) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:63) (Token id:Id.Lit_Chars val:'\tdone >file &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\tgit update-index --add file &&\n' span_id:65) (Token id: Id.Lit_Chars val: '\tfor i in 1 2 3 4 5 6 7 a b c d e 8 9 10 11 12\n' span_id: 66 ) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:67) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:68) (Token id:Id.Lit_Chars val:'\tdone >file &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\tcat file >expect &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\tgit diff >O0.diff &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72) (Token id: Id.Lit_Chars val: '\tsed -e "s/@@ -5,6 +5,11 @@/@@ -2,6 +2,11 @@/" >O1.diff O0.diff &&\n' span_id: 73 ) (Token id: Id.Lit_Chars val: '\tsed -e "s/@@ -5,6 +5,11 @@/@@ -7,6 +7,11 @@/" >O2.diff O0.diff &&\n' span_id: 74 ) (Token id: Id.Lit_Chars val: '\tsed -e "s/@@ -5,6 +5,11 @@/@@ -19,6 +19,11 @@/" >O3.diff O0.diff &&\n' span_id: 75 ) (Token id:Id.Lit_Chars val:'\n' span_id:76) (Token id: Id.Lit_Chars val: '\tsed -e "s/^ 5/ S/" >F0.diff O0.diff &&\n' span_id: 77 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/^ 5/ S/" >F1.diff O1.diff &&\n' span_id:78) (Token id: Id.Lit_Chars val: '\tsed -e "s/^ 5/ S/" >F2.diff O2.diff &&\n' span_id: 79 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/^ 5/ S/" >F3.diff O3.diff\n' span_id:80) (Token id:Id.Lit_Chars val:'\n' span_id:81) ) } ) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'unmodified patch' span_id:88))} {(O0.diff)}) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'minus offset' span_id:97))} {(O1.diff)}) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'plus offset' span_id:106))} {(O2.diff)}) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'big offset' span_id:115))} {(O3.diff)}) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'fuzz with no offset' span_id:124))} {(-C2)} {(F0.diff)} ) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'fuzz with minus offset' span_id:135))} {(-C2)} {(F1.diff)} ) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'fuzz with plus offset' span_id:146))} {(-C2)} {(F2.diff)} ) (C {(dotest)} {(SQ (Token id:Id.Lit_Chars val:'fuzz with big offset' span_id:157))} {(-C2)} {(F3.diff)} ) (C {(test_done)}) ] )