(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:'core.whitespace rules and git apply' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: prepare_test_file body: (command.BraceGroup children: [ (command.Simple words: [{(sed)} {(-e)} {(DQ ('s/_/ /g'))} {(-e)} {(DQ ('s/>/\t/'))}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:66) fd: -1 here_begin: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\E' span_id:67) ) (OF) } here_end_span_id: 87 stdin_parts: [ ('An_SP in an ordinary line>and a HT.\n') ('>A HT (%).\n') ('_>A SP and a HT (@%).\n') ('_>_A SP, a HT and a SP (@%).\n') ('_______Seven SP.\n') ('________Eight SP (#).\n') ('_______>Seven SP and a HT (@%).\n') ('________>Eight SP and a HT (@#%).\n') ('_______>_Seven SP, a HT and a SP (@%).\n') ('________>_Eight SP, a HT and a SP (@#%).\n') ('_______________Fifteen SP (#).\n') ('_______________>Fifteen SP and a HT (@#%).\n') ('________________Sixteen SP (#=).\n') ('________________>Sixteen SP and a HT (@#%=).\n') ('_____a__Five SP, a non WS, two SP.\n') ('A line with a (!) trailing SP_\n') ('A line with a (!) trailing HT>\n') ] ) ] ) ] ) ) (command.ShFunction name: apply_patch body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:99) fd: -1 arg_word: {(target)} ) ] ) (command.Pipeline children: [ (command.Simple words: [ {(sed)} {(-e)} { (DQ ('s|') (Id.Lit_Other '\\') ('([ab]') (Id.Lit_Other '\\') (')/file|') (Id.Lit_Other '\\') ('1/target|') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:119) fd: -1 arg_word: {(patch)} ) ] ) (C {(git)} {(apply)} {(DQ ($ Id.VSub_At '$@'))}) ] negated: F ) ] ) ] ) ) (command.ShFunction name: test_fix body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(apply_patch)} {(--whitespace) (Id.Lit_Equals '=') (fix)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:156) arg_word: {(1)} ) ] ) (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$DIFF')} {(file)} {(target)}) (command.Simple words: [{(sed)} {(-n)} {(-e)} {(DQ ('s/^> //p'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:184) fd: -1 arg_word: {(fixed)} ) ] ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fixed_cnt) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:194) command_list: (command.CommandList children: [ (command.Simple words: [{(wc)} {(-l)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:199) fd: -1 arg_word: {(fixed)} ) ] ) ] ) ) } spids: [193] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect_cnt) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$fixed_cnt')} spids: [217] ) ] ) ] spids: [213 215 220 -1] ) (case_arm pat_list: [{(Id.Lit_QMark '?') (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect_cnt) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:228) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{(grep)} {(DQ ('[') ($ Id.VSub_Number '$1') (']'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:237) fd: -1 arg_word: {(fixed)} ) ] ) (C {(wc)} {(-l)}) ] negated: F ) ] ) ) } spids: [227] ) ] ) ] spids: [223 225 247 -1] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {($ Id.VSub_DollarName '$fixed_cnt')} {(-eq)} {($ Id.VSub_DollarName '$expect_cnt')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:263) arg_word: {(1)} ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect_cnt) op: assign_op.Equal rhs: {(0)} spids: [286] ) ] ) ] spids: [282 284 289 -1] ) (case_arm pat_list: [{(Id.Lit_QMark '?') (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expect_cnt) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:297) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{(grep)} {(DQ ('[') ($ Id.VSub_Number '$1') (']'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:306) fd: -1 arg_word: {(file)} ) ] ) (C {(wc)} {(-l)}) ] negated: F ) ] ) ) } spids: [296] ) ] ) ] spids: [292 294 316 -1] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {($ Id.VSub_DollarName '$fixed_cnt')} {(-eq)} {($ Id.VSub_DollarName '$expect_cnt')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:332) arg_word: {(1)} ) ] ) (command.Simple words: [{(git)} {(diff-files)} {(-p)} {(target)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:350) fd: -1 arg_word: {(fixed-patch)} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-s)} {(fixed-patch)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:362) arg_word: {(0)} ) ] ) (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:372) fd: -1 arg_word: {(target)} ) ] ) (command.Simple words: [{(git)} {(apply)} {(--whitespace) (Id.Lit_Equals '=') (error-all)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:384) fd: -1 arg_word: {(fixed-patch)} ) ] ) ] ) ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:396) (Token id:Id.Lit_Chars val:'\n' span_id:397) (Token id:Id.Lit_Chars val:'\t>file &&\n' span_id:398) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:399) (Token id:Id.Lit_Chars val:'\tprepare_test_file >file &&\n' span_id:400) (Token id:Id.Lit_Chars val:'\tgit diff-files -p >patch &&\n' span_id:401) (Token id:Id.Lit_Chars val:'\t>target &&\n' span_id:402) (Token id:Id.Lit_Chars val:'\tgit add target\n' span_id:403) (Token id:Id.Lit_Chars val:'\n' span_id:404) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whitespace=nowarn, default rule' span_id:411))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:415) (Token id:Id.Lit_Chars val:'\n' span_id:416) (Token id:Id.Lit_Chars val:'\tapply_patch --whitespace=nowarn &&\n' span_id:417) (Token id:Id.Lit_Chars val:'\ttest_cmp file target\n' span_id:418) (Token id:Id.Lit_Chars val:'\n' span_id:419) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whitespace=warn, default rule' span_id:426))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:430) (Token id:Id.Lit_Chars val:'\n' span_id:431) (Token id:Id.Lit_Chars val:'\tapply_patch --whitespace=warn &&\n' span_id:432) (Token id:Id.Lit_Chars val:'\ttest_cmp file target\n' span_id:433) (Token id:Id.Lit_Chars val:'\n' span_id:434) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whitespace=error-all, default rule' span_id:441))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:445) (Token id:Id.Lit_Chars val:'\n' span_id:446) (Token id: Id.Lit_Chars val: '\ttest_must_fail apply_patch --whitespace=error-all &&\n' span_id: 447 ) (Token id:Id.Lit_Chars val:'\t! test -s target\n' span_id:448) (Token id:Id.Lit_Chars val:'\n' span_id:449) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whitespace=error-all, no rule' span_id:456))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:460) (Token id:Id.Lit_Chars val:'\n' span_id:461) (Token id: Id.Lit_Chars val: '\tgit config core.whitespace -trailing,-space-before,-indent &&\n' span_id: 462 ) (Token id:Id.Lit_Chars val:'\tapply_patch --whitespace=error-all &&\n' span_id:463) (Token id:Id.Lit_Chars val:'\ttest_cmp file target\n' span_id:464) (Token id:Id.Lit_Chars val:'\n' span_id:465) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whitespace=error-all, no rule (attribute)' span_id:472))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:476) (Token id:Id.Lit_Chars val:'\n' span_id:477) (Token id: Id.Lit_Chars val: '\tgit config --unset core.whitespace &&\n' span_id: 478 ) (Token id:Id.Lit_Chars val:'\techo "target -whitespace" >.gitattributes &&\n' span_id:479) (Token id: Id.Lit_Chars val: '\tapply_patch --whitespace=error-all &&\n' span_id: 480 ) (Token id:Id.Lit_Chars val:'\ttest_cmp file target\n' span_id:481) (Token id:Id.Lit_Chars val:'\n' span_id:482) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'spaces inserted by tab-in-indent' span_id:489))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:493) (Token id:Id.Lit_Chars val:'\n' span_id:494) (Token id: Id.Lit_Chars val: '\tgit config core.whitespace -trailing,-space,-indent,tab &&\n' span_id: 495 ) (Token id:Id.Lit_Chars val:'\trm -f .gitattributes &&\n' span_id:496) (Token id:Id.Lit_Chars val:'\ttest_fix % &&\n' span_id:497) (Token id:Id.Lit_Chars val:'\tsed -e "s/_/ /g" -e "s/>/\t/" <<-\\EOF >expect &&\n' span_id:498) (Token id: Id.Lit_Chars val: '\t\tAn_SP in an ordinary line>and a HT.\n' span_id: 499 ) (Token id:Id.Lit_Chars val:'\t\t________A HT (%).\n' span_id:500) (Token id:Id.Lit_Chars val:'\t\t________A SP and a HT (@%).\n' span_id:501) (Token id:Id.Lit_Chars val:'\t\t_________A SP, a HT and a SP (@%).\n' span_id:502) (Token id:Id.Lit_Chars val:'\t\t_______Seven SP.\n' span_id:503) (Token id:Id.Lit_Chars val:'\t\t________Eight SP (#).\n' span_id:504) (Token id:Id.Lit_Chars val:'\t\t________Seven SP and a HT (@%).\n' span_id:505) (Token id:Id.Lit_Chars val:'\t\t________________Eight SP and a HT (@#%).\n' span_id:506) (Token id: Id.Lit_Chars val: '\t\t_________Seven SP, a HT and a SP (@%).\n' span_id: 507 ) (Token id:Id.Lit_Chars val:'\t\t_________________Eight SP, a HT and a SP (@#%).\n' span_id:508) (Token id:Id.Lit_Chars val:'\t\t_______________Fifteen SP (#).\n' span_id:509) (Token id:Id.Lit_Chars val:'\t\t________________Fifteen SP and a HT (@#%).\n' span_id:510) (Token id:Id.Lit_Chars val:'\t\t________________Sixteen SP (#=).\n' span_id:511) (Token id:Id.Lit_Chars val:'\t\t________________________Sixteen SP and a HT (@#%=).\n' span_id:512) (Token id: Id.Lit_Chars val: '\t\t_____a__Five SP, a non WS, two SP.\n' span_id: 513 ) (Token id:Id.Lit_Chars val:'\t\tA line with a (!) trailing SP_\n' span_id:514) (Token id:Id.Lit_Chars val:'\t\tA line with a (!) trailing HT>\n' span_id:515) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:516) (Token id:Id.Lit_Chars val:'\ttest_cmp expect target\n' span_id:517) (Token id:Id.Lit_Chars val:'\n' span_id:518) ) } ) (command.ForEach iter_name: t iter_words: [{(-)} {(SQ )}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$t'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tt) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'!' span_id:550))} spids: [548] ) ] ) ] spids: [544 546 553 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tt) op: assign_op.Equal rhs: (word.Empty) spids: [558] ) ] ) ] spids: [555 556 560 -1] ) ] ) (command.ForEach iter_name: s iter_words: [{(-)} {(SQ )}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$s'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ts) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'@' span_id:594))} spids: [592] ) ] ) ] spids: [588 590 597 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ts) op: assign_op.Equal rhs: (word.Empty) spids: [602] ) ] ) ] spids: [599 600 604 -1] ) ] ) (command.ForEach iter_name: i iter_words: [{(-)} {(SQ )}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$i'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ti) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'#' span_id:638))} spids: [636] ) (assign_pair lhs: (sh_lhs_expr.Name name:ti16) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'=' span_id:643))} spids: [641] ) ] ) ] spids: [632 634 645 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ti) op: assign_op.Equal rhs: (word.Empty) spids: [650] ) (assign_pair lhs: (sh_lhs_expr.Name name:ti16) op: assign_op.Equal rhs: (word.Empty) spids: [652] ) ] ) ] spids: [647 648 654 -1] ) ] ) (command.ForEach iter_name: h iter_words: [{(-)} {(SQ )}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-z)} { (DQ ($ Id.VSub_DollarName '$h') ($ Id.VSub_DollarName '$i') ) } {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 687 ) ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$h'))} arms: [ (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:th) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'%' span_id:704))} spids: [702] ) ] ) ] spids: [698 700 707 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:th) op: assign_op.Equal rhs: (word.Empty) spids: [712] ) ] ) ] spids: [709 710 714 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rule) op: assign_op.Equal rhs: {(${ Id.VSub_Name t) (trailing) (Id.Lit_Comma ',') (${ Id.VSub_Name s) (space) (Id.Lit_Comma ',') (${ Id.VSub_Name i) (indent) (Id.Lit_Comma ',') (${ Id.VSub_Name h) (tab) } spids: [719] ) ] ) (C {(rm)} {(-f)} {(.gitattributes)}) (C {(test_expect_success)} {(DQ ('rule=') ($ Id.VSub_DollarName '$rule'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:757) (Token id: Id.Lit_Chars val: '\t\t\t\t\tgit config core.whitespace "$rule" &&\n' span_id: 758 ) (Token id:Id.Lit_Chars val:'\t\t\t\t\ttest_fix "$tt$ts$ti$th"\n' span_id:759) (Token id: Id.Lit_Chars val: '\t\t\t\t' span_id: 760 ) ) } ) (C {(test_expect_success)} {(DQ ('rule=') ($ Id.VSub_DollarName '$rule') (',tabwidth=16'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:774) (Token id: Id.Lit_Chars val: '\t\t\t\t\tgit config core.whitespace "$rule,tabwidth=16" &&\n' span_id: 775 ) (Token id:Id.Lit_Chars val:'\t\t\t\t\ttest_fix "$tt$ts$ti16$th"\n' span_id:776) (Token id: Id.Lit_Chars val: '\t\t\t\t' span_id: 777 ) ) } ) (C {(test_expect_success)} { (DQ ('rule=') ($ Id.VSub_DollarName '$rule') (' (attributes)')) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:791) (Token id: Id.Lit_Chars val: '\t\t\t\t\tgit config --unset core.whitespace &&\n' span_id: 792 ) (Token id: Id.Lit_Chars val: '\t\t\t\t\techo "target whitespace=$rule" >.gitattributes &&\n' span_id: 793 ) (Token id:Id.Lit_Chars val:'\t\t\t\t\ttest_fix "$tt$ts$ti$th"\n' span_id:794) (Token id: Id.Lit_Chars val: '\t\t\t\t' span_id: 795 ) ) } ) (C {(test_expect_success)} { (DQ ('rule=') ($ Id.VSub_DollarName '$rule') (',tabwidth=16 (attributes)') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:809) (Token id: Id.Lit_Chars val: '\t\t\t\t\techo "target whitespace=$rule,tabwidth=16" >.gitattributes &&\n' span_id: 810 ) (Token id:Id.Lit_Chars val:'\t\t\t\t\ttest_fix "$tt$ts$ti16$th"\n' span_id:811) (Token id: Id.Lit_Chars val: '\t\t\t\t' span_id: 812 ) ) } ) ] ) ) ] ) ) ] ) ) ] ) ) (command.ShFunction name: create_patch body: (command.BraceGroup children: [ (command.Simple words: [{(sed)} {(-e)} {(DQ ('s/_/ /'))}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:844) fd: -1 here_begin: { (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\E' span_id:845) ) (OF) } here_end_span_id: 857 stdin_parts: [ ('diff --git a/target b/target\n') ('index e69de29..8bd6648 100644\n') ('--- a/target\n') ('+++ b/target\n') ('@@ -0,0 +1,3 @@\n') ('+An empty line follows\n') ('+\n') ('+A line with trailing whitespace and no newline_\n') ('\\ No newline at end of file\n') ] ) ] ) ] ) ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'trailing whitespace & no newline at the end of file' span_id: 864 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:868) (Token id:Id.Lit_Chars val:'\t>target &&\n' span_id:869) (Token id:Id.Lit_Chars val:'\tcreate_patch >patch-file &&\n' span_id:870) (Token id: Id.Lit_Chars val: '\tgit apply --whitespace=fix patch-file &&\n' span_id: 871 ) (Token id:Id.Lit_Chars val:'\tgrep "newline$" target &&\n' span_id:872) (Token id:Id.Lit_Chars val:'\tgrep "^$" target\n' span_id:873) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blank at EOF with --whitespace=fix (1)' span_id:880))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:884) (Token id: Id.Lit_Chars val: '\ttest_might_fail git config --unset core.whitespace &&\n' span_id: 885 ) (Token id:Id.Lit_Chars val:'\trm -f .gitattributes &&\n' span_id:886) (Token id:Id.Lit_Chars val:'\n' span_id:887) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; echo c; } >one &&\n' span_id:888) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:889) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; echo c; } >expect &&\n' span_id:890) (Token id:Id.Lit_Chars val:'\t{ cat expect; echo; } >one &&\n' span_id:891) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:892) (Token id:Id.Lit_Chars val:'\n' span_id:893) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:894) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=fix patch &&\n' span_id:895) (Token id:Id.Lit_Chars val:'\ttest_cmp expect one\n' span_id:896) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blank at EOF with --whitespace=fix (2)' span_id:903))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:907) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; echo c; } >one &&\n' span_id:908) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:909) (Token id:Id.Lit_Chars val:'\t{ echo a; echo c; } >expect &&\n' span_id:910) (Token id:Id.Lit_Chars val:'\t{ cat expect; echo; echo; } >one &&\n' span_id:911) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\n' span_id:913) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:914) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=fix patch &&\n' span_id:915) (Token id:Id.Lit_Chars val:'\ttest_cmp expect one\n' span_id:916) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blank at EOF with --whitespace=fix (3)' span_id:923))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:927) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; echo; } >one &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:929) (Token id: Id.Lit_Chars val: '\t{ echo a; echo c; echo; } >expect &&\n' span_id: 930 ) (Token id:Id.Lit_Chars val:'\t{ cat expect; echo; echo; } >one &&\n' span_id:931) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:934) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=fix patch &&\n' span_id:935) (Token id:Id.Lit_Chars val:'\ttest_cmp expect one\n' span_id:936) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'blank at end of hunk, not at EOF with --whitespace=fix' span_id: 943 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:947) (Token id: Id.Lit_Chars val: '\t{ echo a; echo b; echo; echo; echo; echo; echo; echo d; } >one &&\n' span_id: 948 ) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:949) (Token id: Id.Lit_Chars val: '\t{ echo a; echo c; echo; echo; echo; echo; echo; echo; echo d; } >expect &&\n' span_id: 950 ) (Token id:Id.Lit_Chars val:'\tcp expect one &&\n' span_id:951) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:952) (Token id:Id.Lit_Chars val:'\n' span_id:953) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:954) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=fix patch &&\n' span_id:955) (Token id:Id.Lit_Chars val:'\ttest_cmp expect one\n' span_id:956) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blank at EOF with --whitespace=warn' span_id:963))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:967) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; echo c; } >one &&\n' span_id:968) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:969) (Token id:Id.Lit_Chars val:'\techo >>one &&\n' span_id:970) (Token id:Id.Lit_Chars val:'\tcat one >expect &&\n' span_id:971) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:972) (Token id:Id.Lit_Chars val:'\n' span_id:973) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:974) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=warn patch 2>error &&\n' span_id:975) (Token id:Id.Lit_Chars val:'\ttest_cmp expect one &&\n' span_id:976) (Token id:Id.Lit_Chars val:'\tgrep "new blank line at EOF" error\n' span_id:977) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blank at EOF with --whitespace=error' span_id:984))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:988) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; echo c; } >one &&\n' span_id:989) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:990) (Token id:Id.Lit_Chars val:'\tcat one >expect &&\n' span_id:991) (Token id:Id.Lit_Chars val:'\techo >>one &&\n' span_id:992) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:993) (Token id:Id.Lit_Chars val:'\n' span_id:994) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:995) (Token id: Id.Lit_Chars val: '\ttest_must_fail git apply --whitespace=error patch 2>error &&\n' span_id: 996 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect one &&\n' span_id:997) (Token id:Id.Lit_Chars val:'\tgrep "new blank line at EOF" error\n' span_id:998) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blank but not empty at EOF' span_id:1005))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1009) (Token id: Id.Lit_Chars val: '\t{ echo a; echo b; echo c; } >one &&\n' span_id: 1010 ) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1011) (Token id:Id.Lit_Chars val:'\techo " " >>one &&\n' span_id:1012) (Token id:Id.Lit_Chars val:'\tcat one >expect &&\n' span_id:1013) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1014) (Token id:Id.Lit_Chars val:'\n' span_id:1015) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:1016) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=warn patch 2>error &&\n' span_id:1017) (Token id:Id.Lit_Chars val:'\ttest_cmp expect one &&\n' span_id:1018) (Token id:Id.Lit_Chars val:'\tgrep "new blank line at EOF" error\n' span_id:1019) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'applying beyond EOF requires one non-blank context line' span_id: 1026 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1030) (Token id: Id.Lit_Chars val: '\t{ echo; echo; echo; echo; } >one &&\n' span_id: 1031 ) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1032) (Token id:Id.Lit_Chars val:'\t{ echo b; } >>one &&\n' span_id:1033) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1034) (Token id:Id.Lit_Chars val:'\n' span_id:1035) (Token id:Id.Lit_Chars val:'\tgit checkout one &&\n' span_id:1036) (Token id:Id.Lit_Chars val:'\t{ echo a; echo; } >one &&\n' span_id:1037) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1038) (Token id: Id.Lit_Chars val: '\ttest_must_fail git apply --whitespace=fix patch &&\n' span_id: 1039 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect &&\n' span_id:1040) (Token id: Id.Lit_Chars val: '\ttest_must_fail git apply --ignore-space-change --whitespace=fix patch &&\n' span_id: 1041 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1042) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tons of blanks at EOF should not apply' span_id:1049))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1053) (Token id: Id.Lit_Chars val: '\tfor i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do\n' span_id: 1054 ) (Token id:Id.Lit_Chars val:'\t\techo; echo; echo; echo;\n' span_id:1055) (Token id:Id.Lit_Chars val:'\tdone >one &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1057) (Token id:Id.Lit_Chars val:'\techo a >>one &&\n' span_id:1058) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1059) (Token id:Id.Lit_Chars val:'\n' span_id:1060) (Token id:Id.Lit_Chars val:'\t>one &&\n' span_id:1061) (Token id: Id.Lit_Chars val: '\ttest_must_fail git apply --whitespace=fix patch &&\n' span_id: 1062 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git apply --ignore-space-change --whitespace=fix patch\n' span_id: 1063 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'missing blank line at end with --whitespace=fix' span_id: 1070 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1074) (Token id:Id.Lit_Chars val:'\techo a >one &&\n' span_id:1075) (Token id:Id.Lit_Chars val:'\techo >>one &&\n' span_id:1076) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1077) (Token id:Id.Lit_Chars val:'\techo b >>one &&\n' span_id:1078) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1079) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1080) (Token id:Id.Lit_Chars val:'\techo a >one &&\n' span_id:1081) (Token id:Id.Lit_Chars val:'\tcp one saved-one &&\n' span_id:1082) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply patch &&\n' span_id:1083) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=fix patch &&\n' span_id:1084) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect &&\n' span_id:1085) (Token id:Id.Lit_Chars val:'\tmv saved-one one &&\n' span_id:1086) (Token id: Id.Lit_Chars val: '\tgit apply --ignore-space-change --whitespace=fix patch &&\n' span_id: 1087 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1088) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'two missing blank lines at end with --whitespace=fix' span_id: 1095 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1099) (Token id: Id.Lit_Chars val: '\t{ echo a; echo; echo b; echo c; } >one &&\n' span_id: 1100 ) (Token id:Id.Lit_Chars val:'\tcp one no-blank-lines &&\n' span_id:1101) (Token id:Id.Lit_Chars val:'\t{ echo; echo; } >>one &&\n' span_id:1102) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1103) (Token id:Id.Lit_Chars val:'\techo d >>one &&\n' span_id:1104) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1105) (Token id:Id.Lit_Chars val:'\techo >>one &&\n' span_id:1106) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1107) (Token id:Id.Lit_Chars val:'\tcp no-blank-lines one &&\n' span_id:1108) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply patch &&\n' span_id:1109) (Token id: Id.Lit_Chars val: '\tgit apply --whitespace=fix patch &&\n' span_id: 1110 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect &&\n' span_id:1111) (Token id:Id.Lit_Chars val:'\tmv no-blank-lines one &&\n' span_id:1112) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply patch &&\n' span_id:1113) (Token id: Id.Lit_Chars val: '\tgit apply --ignore-space-change --whitespace=fix patch &&\n' span_id: 1114 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1115) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'missing blank line at end, insert before end, --whitespace=fix' span_id: 1122 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1126) (Token id:Id.Lit_Chars val:'\t{ echo a; echo; } >one &&\n' span_id:1127) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1128) (Token id:Id.Lit_Chars val:'\t{ echo b; echo a; echo; } >one &&\n' span_id:1129) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1130) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1131) (Token id:Id.Lit_Chars val:'\techo a >one &&\n' span_id:1132) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply patch &&\n' span_id:1133) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=fix patch &&\n' span_id:1134) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1135) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'shrink file with tons of missing blanks at end of file' span_id: 1142 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1146) (Token id: Id.Lit_Chars val: '\t{ echo a; echo b; echo c; } >one &&\n' span_id: 1147 ) (Token id:Id.Lit_Chars val:'\tcp one no-blank-lines &&\n' span_id:1148) (Token id: Id.Lit_Chars val: '\tfor i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do\n' span_id: 1149 ) (Token id:Id.Lit_Chars val:'\t\techo; echo; echo; echo;\n' span_id:1150) (Token id:Id.Lit_Chars val:'\tdone >>one &&\n' span_id:1151) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1152) (Token id:Id.Lit_Chars val:'\techo a >one &&\n' span_id:1153) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1154) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1155) (Token id:Id.Lit_Chars val:'\tcp no-blank-lines one &&\n' span_id:1156) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply patch &&\n' span_id:1157) (Token id:Id.Lit_Chars val:'\tgit apply --whitespace=fix patch &&\n' span_id:1158) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect &&\n' span_id:1159) (Token id:Id.Lit_Chars val:'\tmv no-blank-lines one &&\n' span_id:1160) (Token id: Id.Lit_Chars val: '\tgit apply --ignore-space-change --whitespace=fix patch &&\n' span_id: 1161 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1162) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'missing blanks at EOF must only match blank lines' span_id: 1169 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1173) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; } >one &&\n' span_id:1174) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1175) (Token id:Id.Lit_Chars val:'\t{ echo c; echo d; } >>one &&\n' span_id:1176) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1177) (Token id:Id.Lit_Chars val:'\n' span_id:1178) (Token id:Id.Lit_Chars val:'\techo a >one &&\n' span_id:1179) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply patch &&\n' span_id:1180) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply --whitespace=fix patch &&\n' span_id:1181) (Token id: Id.Lit_Chars val: '\ttest_must_fail git apply --ignore-space-change --whitespace=fix patch\n' span_id: 1182 ) ) } ) (command.Simple words: [{(sed)} {(-e) (SQ (Token id:Id.Lit_Chars val:s/Z// span_id:1190))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1193) fd:-1 arg_word:{(one)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1196) fd: -1 here_begin: {(EOF)} here_end_span_id: 1204 stdin_parts: [('a\n') ('b\n') ('c\n') ('\t\t Z\n')] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'missing blank line should match context line with spaces' span_id: 1209 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1213) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1214) (Token id:Id.Lit_Chars val:'\techo d >>one &&\n' span_id:1215) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1216) (Token id:Id.Lit_Chars val:'\t{ echo a; echo b; echo c; } >one &&\n' span_id:1217) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1218) (Token id:Id.Lit_Chars val:'\t{ echo; echo d; } >>expect &&\n' span_id:1219) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1220) (Token id:Id.Lit_Chars val:'\n' span_id:1221) (Token id: Id.Lit_Chars val: '\tgit apply --whitespace=fix patch &&\n' span_id: 1222 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1223) ) } ) (command.Simple words: [{(sed)} {(-e) (SQ (Token id:Id.Lit_Chars val:s/Z// span_id:1231))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:1234) fd:-1 arg_word:{(one)}) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1237) fd: -1 here_begin: {(EOF)} here_end_span_id: 1245 stdin_parts: [('a\n') ('b\n') ('c\n') ('\t\t Z\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'same, but with the --ignore-space-option' span_id:1250))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1254) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1255) (Token id:Id.Lit_Chars val:'\techo d >>one &&\n' span_id:1256) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1257) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1258) (Token id: Id.Lit_Chars val: '\t{ echo a; echo b; echo c; } >one &&\n' span_id: 1259 ) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1260) (Token id:Id.Lit_Chars val:'\n' span_id:1261) (Token id:Id.Lit_Chars val:'\tgit checkout-index -f one &&\n' span_id:1262) (Token id: Id.Lit_Chars val: '\tgit apply --ignore-space-change --whitespace=fix patch &&\n' span_id: 1263 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1264) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'same, but with CR-LF line endings && cr-at-eol set' span_id: 1271 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1275) (Token id: Id.Lit_Chars val: '\tgit config core.whitespace cr-at-eol &&\n' span_id: 1276 ) (Token id:Id.Lit_Chars val:'\tprintf "a\\r\\n" >one &&\n' span_id:1277) (Token id:Id.Lit_Chars val:'\tprintf "b\\r\\n" >>one &&\n' span_id:1278) (Token id:Id.Lit_Chars val:'\tprintf "c\\r\\n" >>one &&\n' span_id:1279) (Token id:Id.Lit_Chars val:'\tcp one save-one &&\n' span_id:1280) (Token id:Id.Lit_Chars val:'\tprintf " \\r\\n" >>one &&\n' span_id:1281) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1282) (Token id:Id.Lit_Chars val:'\tprintf "d\\r\\n" >>one &&\n' span_id:1283) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1284) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1285) (Token id:Id.Lit_Chars val:'\tmv save-one one &&\n' span_id:1286) (Token id:Id.Lit_Chars val:'\n' span_id:1287) (Token id: Id.Lit_Chars val: '\tgit apply --ignore-space-change --whitespace=fix patch &&\n' span_id: 1288 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1289) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'same, but with CR-LF line endings && cr-at-eol unset' span_id: 1296 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1300) (Token id: Id.Lit_Chars val: '\tgit config --unset core.whitespace &&\n' span_id: 1301 ) (Token id:Id.Lit_Chars val:'\tprintf "a\\r\\n" >one &&\n' span_id:1302) (Token id:Id.Lit_Chars val:'\tprintf "b\\r\\n" >>one &&\n' span_id:1303) (Token id:Id.Lit_Chars val:'\tprintf "c\\r\\n" >>one &&\n' span_id:1304) (Token id:Id.Lit_Chars val:'\tcp one save-one &&\n' span_id:1305) (Token id:Id.Lit_Chars val:'\tprintf " \\r\\n" >>one &&\n' span_id:1306) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:1307) (Token id:Id.Lit_Chars val:'\tcp one expect &&\n' span_id:1308) (Token id:Id.Lit_Chars val:'\tprintf "d\\r\\n" >>one &&\n' span_id:1309) (Token id:Id.Lit_Chars val:'\tgit diff -- one >patch &&\n' span_id:1310) (Token id:Id.Lit_Chars val:'\tmv save-one one &&\n' span_id:1311) (Token id:Id.Lit_Chars val:'\techo d >>expect &&\n' span_id:1312) (Token id:Id.Lit_Chars val:'\n' span_id:1313) (Token id: Id.Lit_Chars val: '\tgit apply --ignore-space-change --whitespace=fix patch &&\n' span_id: 1314 ) (Token id:Id.Lit_Chars val:'\ttest_cmp one expect\n' span_id:1315) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whitespace=fix to expand' span_id:1322))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1326) (Token id: Id.Lit_Chars val: '\tqz_to_tab_space >preimage <<-\\EOF &&\n' span_id: 1327 ) (Token id:Id.Lit_Chars val:'\tQQa\n' span_id:1328) (Token id:Id.Lit_Chars val:'\tQQb\n' span_id:1329) (Token id:Id.Lit_Chars val:'\tQQc\n' span_id:1330) (Token id:Id.Lit_Chars val:'\tZZZZZZZZZZZZZZZZd\n' span_id:1331) (Token id:Id.Lit_Chars val:'\tQQe\n' span_id:1332) (Token id:Id.Lit_Chars val:'\tQQf\n' span_id:1333) (Token id:Id.Lit_Chars val:'\tQQg\n' span_id:1334) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1335) (Token id:Id.Lit_Chars val:'\tqz_to_tab_space >patch <<-\\EOF &&\n' span_id:1336) (Token id:Id.Lit_Chars val:'\tdiff --git a/preimage b/preimage\n' span_id:1337) (Token id:Id.Lit_Chars val:'\t--- a/preimage\n' span_id:1338) (Token id:Id.Lit_Chars val:'\t+++ b/preimage\n' span_id:1339) (Token id:Id.Lit_Chars val:'\t@@ -1,7 +1,6 @@\n' span_id:1340) (Token id:Id.Lit_Chars val:'\t QQa\n' span_id:1341) (Token id:Id.Lit_Chars val:'\t QQb\n' span_id:1342) (Token id:Id.Lit_Chars val:'\t QQc\n' span_id:1343) (Token id:Id.Lit_Chars val:'\t-QQd\n' span_id:1344) (Token id:Id.Lit_Chars val:'\t QQe\n' span_id:1345) (Token id:Id.Lit_Chars val:'\t QQf\n' span_id:1346) (Token id:Id.Lit_Chars val:'\t QQg\n' span_id:1347) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1348) (Token id: Id.Lit_Chars val: '\tgit -c core.whitespace=tab-in-indent apply --whitespace=fix patch\n' span_id: 1349 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'whitespace check skipped for excluded paths' span_id:1356))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1360) (Token id: Id.Lit_Chars val: '\tgit config core.whitespace blank-at-eol &&\n' span_id: 1361 ) (Token id:Id.Lit_Chars val:'\t>used &&\n' span_id:1362) (Token id:Id.Lit_Chars val:'\t>unused &&\n' span_id:1363) (Token id:Id.Lit_Chars val:'\tgit add used unused &&\n' span_id:1364) (Token id:Id.Lit_Chars val:'\techo "used" >used &&\n' span_id:1365) (Token id:Id.Lit_Chars val:'\techo "unused " >unused &&\n' span_id:1366) (Token id: Id.Lit_Chars val: '\tgit diff-files -p used unused >patch &&\n' span_id: 1367 ) (Token id: Id.Lit_Chars val: '\tgit apply --include=used --stat --whitespace=error <patch\n' span_id: 1368 ) ) } ) (C {(test_done)}) ] )