(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:'word diff colors' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/diff-lib.sh)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:24) fd: -1 arg_word: {(pre.simple)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:27) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:28)) (OF)} here_end_span_id: 34 stdin_parts: [('h(4)\n') ('\n') ('a = b + c\n')] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:37) fd: -1 arg_word: {(post.simple)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:40) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:41)) (OF)} here_end_span_id: 51 stdin_parts: [ ('h(4),hh[44]\n') ('\n') ('a = b + c\n') ('\n') ('aa = a\n') ('\n') ('aeff = aeff * ( aaa )\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:54) fd: -1 arg_word: {(expect.letter-runs-are-words)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:57) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:58)) (OF)} here_end_span_id: 73 stdin_parts: [ ('<BOLD>diff --git a/pre b/post<RESET>\n') ('<BOLD>index 330b04f..5ed8eff 100644<RESET>\n') ('<BOLD>--- a/pre<RESET>\n') ('<BOLD>+++ b/post<RESET>\n') ('<CYAN>@@ -1,3 +1,7 @@<RESET>\n') ('h(4),<GREEN>hh<RESET>[44]\n') ('\n') ('a = b + c<RESET>\n') ('\n') ('<GREEN>aa = a<RESET>\n') ('\n') ('<GREEN>aeff = aeff * ( aaa<RESET> )\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:76) fd: -1 arg_word: {(expect.non-whitespace-is-word)} ) (redir.HereDoc op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:79) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:80)) (OF)} here_end_span_id: 95 stdin_parts: [ ('<BOLD>diff --git a/pre b/post<RESET>\n') ('<BOLD>index 330b04f..5ed8eff 100644<RESET>\n') ('<BOLD>--- a/pre<RESET>\n') ('<BOLD>+++ b/post<RESET>\n') ('<CYAN>@@ -1,3 +1,7 @@<RESET>\n') ('h(4)<GREEN>,hh[44]<RESET>\n') ('\n') ('a = b + c<RESET>\n') ('\n') ('<GREEN>aa = a<RESET>\n') ('\n') ('<GREEN>aeff = aeff * ( aaa )<RESET>\n') ] ) ] ) (command.ShFunction name: word_diff body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {(test_must_fail)} {(git)} {(diff)} {(--no-index)} {(DQ ($ Id.VSub_At '$@'))} {(pre)} {(post)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:121) fd: -1 arg_word: {(output)} ) ] ) (command.Simple words: [{(test_decode_color)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:129) fd: -1 arg_word: {(output)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:132) fd: -1 arg_word: {(output.decrypted)} ) ] ) (C {(test_cmp)} {(expect)} {(output.decrypted)}) ] ) ] ) ) (command.ShFunction name: test_language_driver body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lang) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [155] ) ] ) (C {(test_expect_success)} {(DQ ("diff driver '") ($ Id.VSub_DollarName '$lang') ("'"))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id: Id.Lit_Chars val: '\t\tcp "$TEST_DIRECTORY/t4034/' span_id: 169 ) ) (DQ ($ Id.VSub_DollarName '$lang')) (SQ (Token id:Id.Lit_Chars val:'/pre" \\\n' span_id:175) (Token id: Id.Lit_Chars val: '\t\t\t"$TEST_DIRECTORY/t4034/' span_id: 176 ) ) (DQ ($ Id.VSub_DollarName '$lang')) (SQ (Token id:Id.Lit_Chars val:'/post" \\\n' span_id:182) (Token id: Id.Lit_Chars val: '\t\t\t"$TEST_DIRECTORY/t4034/' span_id: 183 ) ) (DQ ($ Id.VSub_DollarName '$lang')) (SQ (Token id:Id.Lit_Chars val:'/expect" . &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\t\techo "* diff=' span_id:190) ) (DQ ($ Id.VSub_DollarName '$lang')) (SQ (Token id:Id.Lit_Chars val:'" >.gitattributes &&\n' span_id:196) (Token id: Id.Lit_Chars val: '\t\tword_diff --color-words\n' span_id: 197 ) (Token id:Id.Lit_Chars val:'\t' span_id:198) ) } ) ] ) ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:209) (Token id:Id.Lit_Chars val:'\tgit config diff.color.old red &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\tgit config diff.color.new green &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\tgit config diff.color.func magenta\n' span_id:212) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up pre and post with runs of whitespace' span_id:219))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:223) (Token id:Id.Lit_Chars val:'\tcp pre.simple pre &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\tcp post.simple post\n' span_id:225) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'word diff with runs of whitespace' span_id:232))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:236) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\t\t<BOLD>diff --git a/pre b/post<RESET>\n' span_id:238) (Token id: Id.Lit_Chars val: '\t\t<BOLD>index 330b04f..5ed8eff 100644<RESET>\n' span_id: 239 ) (Token id:Id.Lit_Chars val:'\t\t<BOLD>--- a/pre<RESET>\n' span_id:240) (Token id:Id.Lit_Chars val:'\t\t<BOLD>+++ b/post<RESET>\n' span_id:241) (Token id:Id.Lit_Chars val:'\t\t<CYAN>@@ -1,3 +1,7 @@<RESET>\n' span_id:242) (Token id: Id.Lit_Chars val: '\t\t<RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET>\n' span_id: 243 ) (Token id:Id.Lit_Chars val:'\n' span_id:244) (Token id:Id.Lit_Chars val:'\t\ta = b + c<RESET>\n' span_id:245) (Token id:Id.Lit_Chars val:'\n' span_id:246) (Token id:Id.Lit_Chars val:'\t\t<GREEN>aa = a<RESET>\n' span_id:247) (Token id:Id.Lit_Chars val:'\n' span_id:248) (Token id: Id.Lit_Chars val: '\t\t<GREEN>aeff = aeff * ( aaa )<RESET>\n' span_id: 249 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:250) (Token id:Id.Lit_Chars val:'\tword_diff --color-words &&\n' span_id:251) (Token id:Id.Lit_Chars val:'\tword_diff --word-diff=color &&\n' span_id:252) (Token id:Id.Lit_Chars val:'\tword_diff --color --word-diff=color\n' span_id:253) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--word-diff=porcelain' span_id:260))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:264) (Token id:Id.Lit_Chars val:'\tsed ' span_id:265) ) (s/) (Id.Lit_Pound '#') (.) (Id.Lit_Star '*') (Id.Lit_Other '$') (//) (SQ (Token id:Id.Lit_Chars val:' >expect <<-\\EOF &&\n' span_id:274) (Token id:Id.Lit_Chars val:'\t\tdiff --git a/pre b/post\n' span_id:275) (Token id:Id.Lit_Chars val:'\t\tindex 330b04f..5ed8eff 100644\n' span_id:276) (Token id:Id.Lit_Chars val:'\t\t--- a/pre\n' span_id:277) (Token id:Id.Lit_Chars val:'\t\t+++ b/post\n' span_id:278) (Token id:Id.Lit_Chars val:'\t\t@@ -1,3 +1,7 @@\n' span_id:279) (Token id:Id.Lit_Chars val:'\t\t-h(4)\n' span_id:280) (Token id:Id.Lit_Chars val:'\t\t+h(4),hh[44]\n' span_id:281) (Token id:Id.Lit_Chars val:'\t\t~\n' span_id:282) (Token id:Id.Lit_Chars val:'\t\t # significant space\n' span_id:283) (Token id:Id.Lit_Chars val:'\t\t~\n' span_id:284) (Token id:Id.Lit_Chars val:'\t\t a = b + c\n' span_id:285) (Token id:Id.Lit_Chars val:'\t\t~\n' span_id:286) (Token id:Id.Lit_Chars val:'\t\t~\n' span_id:287) (Token id:Id.Lit_Chars val:'\t\t+aa = a\n' span_id:288) (Token id:Id.Lit_Chars val:'\t\t~\n' span_id:289) (Token id:Id.Lit_Chars val:'\t\t~\n' span_id:290) (Token id:Id.Lit_Chars val:'\t\t+aeff = aeff * ( aaa )\n' span_id:291) (Token id:Id.Lit_Chars val:'\t\t~\n' span_id:292) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:293) (Token id:Id.Lit_Chars val:'\tword_diff --word-diff=porcelain\n' span_id:294) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--word-diff=plain' span_id:301))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:305) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:306) (Token id:Id.Lit_Chars val:'\t\tdiff --git a/pre b/post\n' span_id:307) (Token id:Id.Lit_Chars val:'\t\tindex 330b04f..5ed8eff 100644\n' span_id:308) (Token id:Id.Lit_Chars val:'\t\t--- a/pre\n' span_id:309) (Token id:Id.Lit_Chars val:'\t\t+++ b/post\n' span_id:310) (Token id:Id.Lit_Chars val:'\t\t@@ -1,3 +1,7 @@\n' span_id:311) (Token id:Id.Lit_Chars val:'\t\t[-h(4)-]{+h(4),hh[44]+}\n' span_id:312) (Token id:Id.Lit_Chars val:'\n' span_id:313) (Token id:Id.Lit_Chars val:'\t\ta = b + c\n' span_id:314) (Token id:Id.Lit_Chars val:'\n' span_id:315) (Token id:Id.Lit_Chars val:'\t\t{+aa = a+}\n' span_id:316) (Token id:Id.Lit_Chars val:'\n' span_id:317) (Token id:Id.Lit_Chars val:'\t\t{+aeff = aeff * ( aaa )+}\n' span_id:318) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:319) (Token id:Id.Lit_Chars val:'\tword_diff --word-diff=plain &&\n' span_id:320) (Token id: Id.Lit_Chars val: '\tword_diff --word-diff=plain --no-color\n' span_id: 321 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--word-diff=plain --color' span_id:328))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:332) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:333) (Token id:Id.Lit_Chars val:'\t\t<BOLD>diff --git a/pre b/post<RESET>\n' span_id:334) (Token id: Id.Lit_Chars val: '\t\t<BOLD>index 330b04f..5ed8eff 100644<RESET>\n' span_id: 335 ) (Token id:Id.Lit_Chars val:'\t\t<BOLD>--- a/pre<RESET>\n' span_id:336) (Token id:Id.Lit_Chars val:'\t\t<BOLD>+++ b/post<RESET>\n' span_id:337) (Token id:Id.Lit_Chars val:'\t\t<CYAN>@@ -1,3 +1,7 @@<RESET>\n' span_id:338) (Token id: Id.Lit_Chars val: '\t\t<RED>[-h(4)-]<RESET><GREEN>{+h(4),hh[44]+}<RESET>\n' span_id: 339 ) (Token id:Id.Lit_Chars val:'\n' span_id:340) (Token id:Id.Lit_Chars val:'\t\ta = b + c<RESET>\n' span_id:341) (Token id:Id.Lit_Chars val:'\n' span_id:342) (Token id:Id.Lit_Chars val:'\t\t<GREEN>{+aa = a+}<RESET>\n' span_id:343) (Token id:Id.Lit_Chars val:'\n' span_id:344) (Token id: Id.Lit_Chars val: '\t\t<GREEN>{+aeff = aeff * ( aaa )+}<RESET>\n' span_id: 345 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:346) (Token id:Id.Lit_Chars val:'\tword_diff --word-diff=plain --color\n' span_id:347) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'word diff without context' span_id:354))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:358) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:359) (Token id:Id.Lit_Chars val:'\t\t<BOLD>diff --git a/pre b/post<RESET>\n' span_id:360) (Token id: Id.Lit_Chars val: '\t\t<BOLD>index 330b04f..5ed8eff 100644<RESET>\n' span_id: 361 ) (Token id:Id.Lit_Chars val:'\t\t<BOLD>--- a/pre<RESET>\n' span_id:362) (Token id:Id.Lit_Chars val:'\t\t<BOLD>+++ b/post<RESET>\n' span_id:363) (Token id:Id.Lit_Chars val:'\t\t<CYAN>@@ -1 +1 @@<RESET>\n' span_id:364) (Token id: Id.Lit_Chars val: '\t\t<RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET>\n' span_id: 365 ) (Token id: Id.Lit_Chars val: '\t\t<CYAN>@@ -3,0 +4,4 @@<RESET> <RESET><MAGENTA>a = b + c<RESET>\n' span_id: 366 ) (Token id:Id.Lit_Chars val:'\n' span_id:367) (Token id:Id.Lit_Chars val:'\t\t<GREEN>aa = a<RESET>\n' span_id:368) (Token id:Id.Lit_Chars val:'\n' span_id:369) (Token id: Id.Lit_Chars val: '\t\t<GREEN>aeff = aeff * ( aaa )<RESET>\n' span_id: 370 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:371) (Token id:Id.Lit_Chars val:'\tword_diff --color-words --unified=0\n' span_id:372) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'word diff with a regular expression' span_id:379))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:383) (Token id: Id.Lit_Chars val: '\tcp expect.letter-runs-are-words expect &&\n' span_id: 384 ) (Token id:Id.Lit_Chars val:'\tword_diff --color-words="[a-z]+"\n' span_id:385) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up a diff driver' span_id:392))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:396) (Token id: Id.Lit_Chars val: '\tgit config diff.testdriver.wordRegex "[^[:space:]]" &&\n' span_id: 397 ) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >.gitattributes\n' span_id:398) (Token id:Id.Lit_Chars val:'\t\tpre diff=testdriver\n' span_id:399) (Token id:Id.Lit_Chars val:'\t\tpost diff=testdriver\n' span_id:400) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:401) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'option overrides .gitattributes' span_id:408))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:412) (Token id: Id.Lit_Chars val: '\tcp expect.letter-runs-are-words expect &&\n' span_id: 413 ) (Token id:Id.Lit_Chars val:'\tword_diff --color-words="[a-z]+"\n' span_id:414) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'use regex supplied by driver' span_id:421))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:425) (Token id: Id.Lit_Chars val: '\tcp expect.non-whitespace-is-word expect &&\n' span_id: 426 ) (Token id:Id.Lit_Chars val:'\tword_diff --color-words\n' span_id:427) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up diff.wordRegex option' span_id:434))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:438) (Token id: Id.Lit_Chars val: '\tgit config diff.wordRegex "[[:alnum:]]+"\n' span_id: 439 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'command-line overrides config' span_id:446))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:450) (Token id: Id.Lit_Chars val: '\tcp expect.letter-runs-are-words expect &&\n' span_id: 451 ) (Token id:Id.Lit_Chars val:'\tword_diff --color-words="[a-z]+"\n' span_id:452) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'command-line overrides config: --word-diff-regex' span_id: 459 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:463) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\t\t<BOLD>diff --git a/pre b/post<RESET>\n' span_id:465) (Token id: Id.Lit_Chars val: '\t\t<BOLD>index 330b04f..5ed8eff 100644<RESET>\n' span_id: 466 ) (Token id:Id.Lit_Chars val:'\t\t<BOLD>--- a/pre<RESET>\n' span_id:467) (Token id:Id.Lit_Chars val:'\t\t<BOLD>+++ b/post<RESET>\n' span_id:468) (Token id:Id.Lit_Chars val:'\t\t<CYAN>@@ -1,3 +1,7 @@<RESET>\n' span_id:469) (Token id:Id.Lit_Chars val:'\t\th(4),<GREEN>{+hh+}<RESET>[44]\n' span_id:470) (Token id:Id.Lit_Chars val:'\n' span_id:471) (Token id:Id.Lit_Chars val:'\t\ta = b + c<RESET>\n' span_id:472) (Token id:Id.Lit_Chars val:'\n' span_id:473) (Token id:Id.Lit_Chars val:'\t\t<GREEN>{+aa = a+}<RESET>\n' span_id:474) (Token id:Id.Lit_Chars val:'\n' span_id:475) (Token id: Id.Lit_Chars val: '\t\t<GREEN>{+aeff = aeff * ( aaa+}<RESET> )\n' span_id: 476 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:477) (Token id: Id.Lit_Chars val: '\tword_diff --color --word-diff-regex="[a-z]+"\n' span_id: 478 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'.gitattributes override config' span_id:485))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:489) (Token id: Id.Lit_Chars val: '\tcp expect.non-whitespace-is-word expect &&\n' span_id: 490 ) (Token id:Id.Lit_Chars val:'\tword_diff --color-words\n' span_id:491) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: remove diff driver regex' span_id:498))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:502) (Token id: Id.Lit_Chars val: '\ttest_unconfig diff.testdriver.wordRegex\n' span_id: 503 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'use configured regex' span_id:510))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:514) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\t\t<BOLD>diff --git a/pre b/post<RESET>\n' span_id:516) (Token id: Id.Lit_Chars val: '\t\t<BOLD>index 330b04f..5ed8eff 100644<RESET>\n' span_id: 517 ) (Token id:Id.Lit_Chars val:'\t\t<BOLD>--- a/pre<RESET>\n' span_id:518) (Token id:Id.Lit_Chars val:'\t\t<BOLD>+++ b/post<RESET>\n' span_id:519) (Token id:Id.Lit_Chars val:'\t\t<CYAN>@@ -1,3 +1,7 @@<RESET>\n' span_id:520) (Token id:Id.Lit_Chars val:'\t\th(4),<GREEN>hh[44<RESET>]\n' span_id:521) (Token id:Id.Lit_Chars val:'\n' span_id:522) (Token id:Id.Lit_Chars val:'\t\ta = b + c<RESET>\n' span_id:523) (Token id:Id.Lit_Chars val:'\n' span_id:524) (Token id:Id.Lit_Chars val:'\t\t<GREEN>aa = a<RESET>\n' span_id:525) (Token id:Id.Lit_Chars val:'\n' span_id:526) (Token id: Id.Lit_Chars val: '\t\t<GREEN>aeff = aeff * ( aaa<RESET> )\n' span_id: 527 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:528) (Token id:Id.Lit_Chars val:'\tword_diff --color-words\n' span_id:529) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test parsing words for newline' span_id:536))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:540) (Token id:Id.Lit_Chars val:'\techo "aaa (aaa)" >pre &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\techo "aaa (aaa) aaa" >post &&\n' span_id:542) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:543) (Token id:Id.Lit_Chars val:'\t\t<BOLD>diff --git a/pre b/post<RESET>\n' span_id:544) (Token id: Id.Lit_Chars val: '\t\t<BOLD>index c29453b..be22f37 100644<RESET>\n' span_id: 545 ) (Token id:Id.Lit_Chars val:'\t\t<BOLD>--- a/pre<RESET>\n' span_id:546) (Token id:Id.Lit_Chars val:'\t\t<BOLD>+++ b/post<RESET>\n' span_id:547) (Token id:Id.Lit_Chars val:'\t\t<CYAN>@@ -1 +1 @@<RESET>\n' span_id:548) (Token id:Id.Lit_Chars val:'\t\taaa (aaa) <GREEN>aaa<RESET>\n' span_id:549) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:550) (Token id:Id.Lit_Chars val:'\tword_diff --color-words="a+"\n' span_id:551) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test when words are only removed at the end' span_id:558))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:562) (Token id:Id.Lit_Chars val:'\techo "(:" >pre &&\n' span_id:563) (Token id:Id.Lit_Chars val:'\techo "(" >post &&\n' span_id:564) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:565) (Token id:Id.Lit_Chars val:'\t\t<BOLD>diff --git a/pre b/post<RESET>\n' span_id:566) (Token id: Id.Lit_Chars val: '\t\t<BOLD>index 289cb9d..2d06f37 100644<RESET>\n' span_id: 567 ) (Token id:Id.Lit_Chars val:'\t\t<BOLD>--- a/pre<RESET>\n' span_id:568) (Token id:Id.Lit_Chars val:'\t\t<BOLD>+++ b/post<RESET>\n' span_id:569) (Token id:Id.Lit_Chars val:'\t\t<CYAN>@@ -1 +1 @@<RESET>\n' span_id:570) (Token id:Id.Lit_Chars val:'\t\t(<RED>:<RESET>\n' span_id:571) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:572) (Token id:Id.Lit_Chars val:'\tword_diff --color-words=.\n' span_id:573) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--word-diff=none' span_id:580))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:584) (Token id:Id.Lit_Chars val:'\techo "(:" >pre &&\n' span_id:585) (Token id:Id.Lit_Chars val:'\techo "(" >post &&\n' span_id:586) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:587) (Token id:Id.Lit_Chars val:'\t\tdiff --git a/pre b/post\n' span_id:588) (Token id:Id.Lit_Chars val:'\t\tindex 289cb9d..2d06f37 100644\n' span_id:589) (Token id:Id.Lit_Chars val:'\t\t--- a/pre\n' span_id:590) (Token id:Id.Lit_Chars val:'\t\t+++ b/post\n' span_id:591) (Token id:Id.Lit_Chars val:'\t\t@@ -1 +1 @@\n' span_id:592) (Token id:Id.Lit_Chars val:'\t\t-(:\n' span_id:593) (Token id:Id.Lit_Chars val:'\t\t+(\n' span_id:594) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:595) (Token id: Id.Lit_Chars val: '\tword_diff --word-diff=plain --word-diff=none\n' span_id: 596 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unset default driver' span_id:603))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:607) (Token id:Id.Lit_Chars val:'\ttest_unconfig diff.wordregex\n' span_id:608) ) } ) (C {(test_language_driver)} {(ada)}) (C {(test_language_driver)} {(bibtex)}) (C {(test_language_driver)} {(cpp)}) (C {(test_language_driver)} {(csharp)}) (C {(test_language_driver)} {(css)}) (C {(test_language_driver)} {(fortran)}) (C {(test_language_driver)} {(html)}) (C {(test_language_driver)} {(java)}) (C {(test_language_driver)} {(matlab)}) (C {(test_language_driver)} {(objc)}) (C {(test_language_driver)} {(pascal)}) (C {(test_language_driver)} {(perl)}) (C {(test_language_driver)} {(php)}) (C {(test_language_driver)} {(python)}) (C {(test_language_driver)} {(ruby)}) (C {(test_language_driver)} {(tex)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'word-diff with diff.sbe' span_id:680))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:684) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:685) (Token id:Id.Lit_Chars val:'\tdiff --git a/pre b/post\n' span_id:686) (Token id:Id.Lit_Chars val:'\tindex a1a53b5..bc8fe6d 100644\n' span_id:687) (Token id:Id.Lit_Chars val:'\t--- a/pre\n' span_id:688) (Token id:Id.Lit_Chars val:'\t+++ b/post\n' span_id:689) (Token id:Id.Lit_Chars val:'\t@@ -1,3 +1,3 @@\n' span_id:690) (Token id:Id.Lit_Chars val:'\ta\n' span_id:691) (Token id:Id.Lit_Chars val:'\n' span_id:692) (Token id:Id.Lit_Chars val:'\t[-b-]{+c+}\n' span_id:693) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:694) (Token id:Id.Lit_Chars val:'\tcat >pre <<-\\EOF &&\n' span_id:695) (Token id:Id.Lit_Chars val:'\ta\n' span_id:696) (Token id:Id.Lit_Chars val:'\n' span_id:697) (Token id:Id.Lit_Chars val:'\tb\n' span_id:698) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:699) (Token id:Id.Lit_Chars val:'\tcat >post <<-\\EOF &&\n' span_id:700) (Token id:Id.Lit_Chars val:'\ta\n' span_id:701) (Token id:Id.Lit_Chars val:'\n' span_id:702) (Token id:Id.Lit_Chars val:'\tc\n' span_id:703) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:704) (Token id:Id.Lit_Chars val:'\ttest_config diff.suppress-blank-empty true &&\n' span_id:705) (Token id:Id.Lit_Chars val:'\tword_diff --word-diff=plain\n' span_id:706) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'word-diff with no newline at EOF' span_id:713))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:717) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:718) (Token id:Id.Lit_Chars val:'\tdiff --git a/pre b/post\n' span_id:719) (Token id:Id.Lit_Chars val:'\tindex 7bf316e..3dd0303 100644\n' span_id:720) (Token id:Id.Lit_Chars val:'\t--- a/pre\n' span_id:721) (Token id:Id.Lit_Chars val:'\t+++ b/post\n' span_id:722) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:723) (Token id:Id.Lit_Chars val:'\ta a [-a-]{+ab+} a a\n' span_id:724) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:725) (Token id:Id.Lit_Chars val:'\tprintf "%s" "a a a a a" >pre &&\n' span_id:726) (Token id:Id.Lit_Chars val:'\tprintf "%s" "a a ab a a" >post &&\n' span_id:727) (Token id:Id.Lit_Chars val:'\tword_diff --word-diff=plain\n' span_id:728) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup history with two files' span_id:735))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:739) (Token id:Id.Lit_Chars val:'\techo "a b; c" >a.tex &&\n' span_id:740) (Token id:Id.Lit_Chars val:'\techo "a b; c" >z.txt &&\n' span_id:741) (Token id:Id.Lit_Chars val:'\tgit add a.tex z.txt &&\n' span_id:742) (Token id:Id.Lit_Chars val:'\tgit commit -minitial &&\n' span_id:743) (Token id:Id.Lit_Chars val:'\n' span_id:744) (Token id:Id.Lit_Chars val:'\t# modify both\n' span_id:745) (Token id:Id.Lit_Chars val:'\techo "a bx; c" >a.tex &&\n' span_id:746) (Token id:Id.Lit_Chars val:'\techo "a bx; c" >z.txt &&\n' span_id:747) (Token id:Id.Lit_Chars val:'\tgit commit -mmodified -a\n' span_id:748) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'wordRegex for the first file does not apply to the second' span_id: 755 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:759) (Token id: Id.Lit_Chars val: '\techo "*.tex diff=tex" >.gitattributes &&\n' span_id: 760 ) (Token id:Id.Lit_Chars val:'\ttest_config diff.tex.wordRegex "[a-z]+|." &&\n' span_id:761) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:762) (Token id:Id.Lit_Chars val:'\t\tdiff --git a/a.tex b/a.tex\n' span_id:763) (Token id:Id.Lit_Chars val:'\t\t--- a/a.tex\n' span_id:764) (Token id:Id.Lit_Chars val:'\t\t+++ b/a.tex\n' span_id:765) (Token id:Id.Lit_Chars val:'\t\t@@ -1 +1 @@\n' span_id:766) (Token id:Id.Lit_Chars val:'\t\ta [-b-]{+bx+}; c\n' span_id:767) (Token id:Id.Lit_Chars val:'\t\tdiff --git a/z.txt b/z.txt\n' span_id:768) (Token id:Id.Lit_Chars val:'\t\t--- a/z.txt\n' span_id:769) (Token id:Id.Lit_Chars val:'\t\t+++ b/z.txt\n' span_id:770) (Token id:Id.Lit_Chars val:'\t\t@@ -1 +1 @@\n' span_id:771) (Token id:Id.Lit_Chars val:'\t\ta [-b;-]{+bx;+} c\n' span_id:772) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:773) (Token id: Id.Lit_Chars val: '\tgit diff --word-diff HEAD~ >actual &&\n' span_id: 774 ) (Token id:Id.Lit_Chars val:'\tcompare_diff_patch expect actual\n' span_id:775) ) } ) (C {(test_done)}) ] )