(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 --whitespace=strip and configuration file.\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:'\tmkdir sub &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\techo A >sub/file1 &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tcp sub/file1 saved &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tgit add sub/file1 &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\techo "B " >sub/file1 &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit diff >patch.file\n' span_id:36) ) } ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {(tr)} {(SQ (Token id:Id.Lit_Chars val:_ span_id:46))} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:50))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:53) fd: -1 arg_word: {(gpatch.file)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:56) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:57)) (OF) } here_end_span_id: 67 stdin_parts: [ ('--- file1\t2007-02-21 01:04:24.000000000 -0800\n') ('+++ file1+\t2007-02-21 01:07:44.000000000 -0800\n') ('@@ -1 +1 @@\n') ('-A\n') ('+B_\n') ] ) ] ) (command.Simple words: [ {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s|file1|sub/&|' span_id:74))} {(gpatch.file)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:79) fd: -1 arg_word: {(gpatch-sub.file)} ) ] ) (command.Simple words: [ {(sed)} {(-e)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'\t/^--- /s|file1|a/sub/&|\n' span_id:90) (Token id:Id.Lit_Chars val:'\t/^+++ /s|file1|b/sub/&|\n' span_id:91) ) } {(gpatch.file)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:96) fd: -1 arg_word: {(gpatch-ab-sub.file)} ) ] ) (command.ShFunction name: check_result body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [(C {(grep)} {(DQ (' '))} {(DQ ($ Id.VSub_Number '$1'))})] action: [(C {(echo)} {(DQ ('Eh?'))}) (C {(false)})] spids: [110 123] ) (if_arm cond: [(C {(grep)} {(B)} {(DQ ($ Id.VSub_Number '$1'))})] action: [(C {(echo)} {(Happy)})] spids: [136 147] ) ] else_action: [(C {(echo)} {(DQ ('Huh?'))}) (C {(false)})] ) ] ) ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --whitespace=strip' span_id:176))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\n' span_id:181) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:184) (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id: Id.Lit_Chars val: '\tgit apply --whitespace=strip patch.file &&\n' span_id: 186 ) (Token id:Id.Lit_Chars val:'\tcheck_result sub/file1\n' span_id:187) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --whitespace=strip from config' span_id:194))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:198) (Token id:Id.Lit_Chars val:'\n' span_id:199) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:200) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\n' span_id:203) (Token id: Id.Lit_Chars val: '\tgit config apply.whitespace strip &&\n' span_id: 204 ) (Token id:Id.Lit_Chars val:'\tgit apply patch.file &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\tcheck_result sub/file1\n' span_id:206) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:D) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:211) command_list: (command.CommandList children:[(C {(pwd)})]) ) } spids: [210] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --whitespace=strip in subdir' span_id:219))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id:Id.Lit_Chars val:'\n' span_id:224) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:225) (Token id:Id.Lit_Chars val:'\tgit config --unset-all apply.whitespace &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:227) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:228) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\n' span_id:230) (Token id:Id.Lit_Chars val:'\tcd sub &&\n' span_id:231) (Token id: Id.Lit_Chars val: '\tgit apply --whitespace=strip ../patch.file &&\n' span_id: 232 ) (Token id:Id.Lit_Chars val:'\tcheck_result file1\n' span_id:233) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply --whitespace=strip from config in subdir' span_id:240))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:244) (Token id:Id.Lit_Chars val:'\n' span_id:245) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:246) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace strip &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:248) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:249) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:250) (Token id:Id.Lit_Chars val:'\n' span_id:251) (Token id:Id.Lit_Chars val:'\tcd sub &&\n' span_id:252) (Token id:Id.Lit_Chars val:'\tgit apply ../patch.file &&\n' span_id:253) (Token id:Id.Lit_Chars val:'\tcheck_result file1\n' span_id:254) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'same in subdir but with traditional patch input' span_id:261))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:265) (Token id:Id.Lit_Chars val:'\n' span_id:266) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:267) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace strip &&\n' span_id:268) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:269) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:270) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:271) (Token id:Id.Lit_Chars val:'\n' span_id:272) (Token id:Id.Lit_Chars val:'\tcd sub &&\n' span_id:273) (Token id:Id.Lit_Chars val:'\tgit apply ../gpatch.file &&\n' span_id:274) (Token id:Id.Lit_Chars val:'\tcheck_result file1\n' span_id:275) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'same but with traditional patch input of depth 1' span_id: 282 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:286) (Token id:Id.Lit_Chars val:'\n' span_id:287) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:288) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace strip &&\n' span_id:289) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:290) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:291) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:292) (Token id:Id.Lit_Chars val:'\n' span_id:293) (Token id:Id.Lit_Chars val:'\tcd sub &&\n' span_id:294) (Token id:Id.Lit_Chars val:'\tgit apply ../gpatch-sub.file &&\n' span_id:295) (Token id:Id.Lit_Chars val:'\tcheck_result file1\n' span_id:296) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'same but with traditional patch input of depth 2' span_id: 303 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:307) (Token id:Id.Lit_Chars val:'\n' span_id:308) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:309) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace strip &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:311) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:312) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:313) (Token id:Id.Lit_Chars val:'\n' span_id:314) (Token id:Id.Lit_Chars val:'\tcd sub &&\n' span_id:315) (Token id:Id.Lit_Chars val:'\tgit apply ../gpatch-ab-sub.file &&\n' span_id:316) (Token id:Id.Lit_Chars val:'\tcheck_result file1\n' span_id:317) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'same but with traditional patch input of depth 1' span_id: 324 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:328) (Token id:Id.Lit_Chars val:'\n' span_id:329) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:330) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace strip &&\n' span_id:331) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:333) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:334) (Token id:Id.Lit_Chars val:'\n' span_id:335) (Token id:Id.Lit_Chars val:'\tgit apply -p0 gpatch-sub.file &&\n' span_id:336) (Token id:Id.Lit_Chars val:'\tcheck_result sub/file1\n' span_id:337) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'same but with traditional patch input of depth 2' span_id: 344 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:348) (Token id:Id.Lit_Chars val:'\n' span_id:349) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:350) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace strip &&\n' span_id:351) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:352) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:353) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:354) (Token id:Id.Lit_Chars val:'\n' span_id:355) (Token id:Id.Lit_Chars val:'\tgit apply gpatch-ab-sub.file &&\n' span_id:356) (Token id:Id.Lit_Chars val:'\tcheck_result sub/file1\n' span_id:357) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'in subdir with traditional patch input' span_id:364))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:368) (Token id:Id.Lit_Chars val:'\tcd "$D" &&\n' span_id:369) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace strip &&\n' span_id:370) (Token id:Id.Lit_Chars val:'\tcat >.gitattributes <<-EOF &&\n' span_id:371) (Token id:Id.Lit_Chars val:'\t/* whitespace=blank-at-eol\n' span_id:372) (Token id:Id.Lit_Chars val:'\tsub/* whitespace=-blank-at-eol\n' span_id:373) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:374) (Token id:Id.Lit_Chars val:'\trm -f sub/file1 &&\n' span_id:375) (Token id:Id.Lit_Chars val:'\tcp saved sub/file1 &&\n' span_id:376) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:377) (Token id:Id.Lit_Chars val:'\n' span_id:378) (Token id:Id.Lit_Chars val:'\tcd sub &&\n' span_id:379) (Token id:Id.Lit_Chars val:'\tgit apply ../gpatch.file &&\n' span_id:380) (Token id:Id.Lit_Chars val:'\techo "B " >expect &&\n' span_id:381) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file1\n' span_id:382) ) } ) (C {(test_done)}) ] )