(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 grep various.\n' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:26) fd: -1 arg_word: {(hello.c)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:29) fd: -1 here_begin: {(EOF)} here_end_span_id: 48 stdin_parts: [ ('#include <assert.h>\n') ('#include <stdio.h>\n') ('\n') ('int main(int argc, const char **argv)\n') ('{\n') ('\tprintf(') (Id.Right_DoubleQuote '"') ('Hello world.') (Id.Lit_Other '\\') (n) (Id.Right_DoubleQuote '"') (');\n') ('\treturn 0;\n') ('\t/* char ?? */\n') ('}\n') ] ) ] ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id:Id.Lit_Chars val:'\t{\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\techo foo mmap bar\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\techo foo_mmap bar\n' span_id:58) (Token id:Id.Lit_Chars val:'\t\techo foo_mmap bar mmap\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\techo foo mmap bar_mmap\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\techo foo_mmap bar mmap baz\n' span_id:61) (Token id:Id.Lit_Chars val:'\t} >file &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\t{\n' span_id:63) (Token id:Id.Lit_Chars val:'\t\techo Hello world\n' span_id:64) (Token id:Id.Lit_Chars val:'\t\techo HeLLo world\n' span_id:65) (Token id:Id.Lit_Chars val:'\t\techo Hello_world\n' span_id:66) (Token id:Id.Lit_Chars val:'\t\techo HeLLo_world\n' span_id:67) (Token id:Id.Lit_Chars val:'\t} >hello_world &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\t{\n' span_id:69) (Token id:Id.Lit_Chars val:'\t\techo "a+b*c"\n' span_id:70) (Token id:Id.Lit_Chars val:'\t\techo "a+bc"\n' span_id:71) (Token id:Id.Lit_Chars val:'\t\techo "abc"\n' span_id:72) (Token id:Id.Lit_Chars val:'\t} >ab &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\techo vvv >v &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\techo ww w >w &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\techo x x xx x >x &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\techo y yy >y &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\techo zzz > z &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tmkdir t &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\techo test >t/t &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\techo vvv >t/v &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\tmkdir t/a &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\techo vvv >t/a/v &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\t{\n' span_id:84) (Token id:Id.Lit_Chars val:'\t\techo "line without leading space1"\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\techo " line with leading space1"\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\techo " line with leading space2"\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\techo " line with leading space3"\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\techo "line without leading space2"\n' span_id:89) (Token id:Id.Lit_Chars val:'\t} >space &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit commit -m initial\n' span_id:93) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep should not segfault with a bad input' span_id:100))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id:Id.Lit_Chars val:'\ttest_must_fail git grep "("\n' span_id:105) ) } ) (command.ForEach iter_name: H iter_words: [{(HEAD)} {(SQ )}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$H'))} arms: [ (case_arm pat_list: [{(HEAD)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HC) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'HEAD:' span_id:137))} spids: [135] ) (assign_pair lhs: (sh_lhs_expr.Name name:L) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:HEAD span_id:142))} spids: [140] ) ] ) ] spids: [132 133 145 -1] ) (case_arm pat_list: [{(SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:HC) op: assign_op.Equal rhs: (word.Empty) spids: [152] ) (assign_pair lhs: (sh_lhs_expr.Name name:L) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'in working tree' span_id:156))} spids: [154] ) ] ) ] spids: [148 150 159 -1] ) ] ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:175) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}file:1:foo mmap bar\n' span_id:176) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}file:3:foo_mmap bar mmap\n' span_id: 177 ) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}file:4:foo mmap bar_mmap\n' span_id:178) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}file:5:foo_mmap bar mmap baz\n' span_id: 179 ) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:180) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.linenumber=false grep -n -w -e mmap $H >actual &&\n' span_id: 181 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:182) (Token id:Id.Lit_Chars val:'\t' span_id:183) ) } ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:196) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:197) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}file:1:foo mmap bar\n' span_id:198) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}file:3:foo_mmap bar mmap\n' span_id: 199 ) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}file:4:foo mmap bar_mmap\n' span_id:200) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}file:5:foo_mmap bar mmap baz\n' span_id: 201 ) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:202) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.linenumber=true grep -w -e mmap $H >actual &&\n' span_id: 203 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:204) (Token id:Id.Lit_Chars val:'\t' span_id:205) ) } ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:218) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:219) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}file:foo mmap bar\n' span_id:220) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}file:foo_mmap bar mmap\n' span_id: 221 ) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}file:foo mmap bar_mmap\n' span_id:222) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}file:foo_mmap bar mmap baz\n' span_id: 223 ) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:224) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.linenumber=true grep --no-line-number -w -e mmap $H >actual &&\n' span_id: 225 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:226) (Token id:Id.Lit_Chars val:'\t' span_id:227) ) } ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L') (' (w)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:241) (Token id:Id.Lit_Chars val:'\t\t: >expected &&\n' span_id:242) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git grep -n -w -e "^w" $H >actual &&\n' span_id:243) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 244 ) (Token id:Id.Lit_Chars val:'\t' span_id:245) ) } ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L') (' (x)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:259) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:260) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}x:1:x x xx x\n' span_id:261) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\t\tgit grep -n -w -e "x xx* x" $H >actual &&\n' span_id:263) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 264 ) (Token id:Id.Lit_Chars val:'\t' span_id:265) ) } ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L') (' (y-1)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:279) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:280) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}y:1:y yy\n' span_id:281) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\t\tgit grep -n -w -e "^y" $H >actual &&\n' span_id:283) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 284 ) (Token id:Id.Lit_Chars val:'\t' span_id:285) ) } ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L') (' (y-2)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:299) (Token id:Id.Lit_Chars val:'\t\t: >expected &&\n' span_id:300) (Token id:Id.Lit_Chars val:'\t\tif git grep -n -w -e "^y y" $H >actual\n' span_id:301) (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:302) (Token id:Id.Lit_Chars val:'\t\t\techo should not have matched\n' span_id:303) (Token id:Id.Lit_Chars val:'\t\t\tcat actual\n' span_id:304) (Token id:Id.Lit_Chars val:'\t\t\tfalse\n' span_id:305) (Token id:Id.Lit_Chars val:'\t\telse\n' span_id:306) (Token id:Id.Lit_Chars val:'\t\t\ttest_cmp expected actual\n' span_id:307) (Token id:Id.Lit_Chars val:'\t\tfi\n' span_id:308) (Token id:Id.Lit_Chars val:'\t' span_id:309) ) } ) (C {(test_expect_success)} {(DQ ('grep -w ') ($ Id.VSub_DollarName '$L') (' (z)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:323) (Token id:Id.Lit_Chars val:'\t\t: >expected &&\n' span_id:324) (Token id:Id.Lit_Chars val:'\t\tif git grep -n -w -e "^z" $H >actual\n' span_id:325) (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:326) (Token id:Id.Lit_Chars val:'\t\t\techo should not have matched\n' span_id:327) (Token id:Id.Lit_Chars val:'\t\t\tcat actual\n' span_id:328) (Token id:Id.Lit_Chars val:'\t\t\tfalse\n' span_id:329) (Token id:Id.Lit_Chars val:'\t\telse\n' span_id:330) (Token id:Id.Lit_Chars val:'\t\t\ttest_cmp expected actual\n' span_id:331) (Token id:Id.Lit_Chars val:'\t\tfi\n' span_id:332) (Token id:Id.Lit_Chars val:'\t' span_id:333) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' (t-1)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:347) (Token id: Id.Lit_Chars val: '\t\techo "${HC}t/t:1:test" >expected &&\n' span_id: 348 ) (Token id:Id.Lit_Chars val:'\t\tgit grep -n -e test $H >actual &&\n' span_id:349) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 350 ) (Token id:Id.Lit_Chars val:'\t' span_id:351) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' (t-2)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:365) (Token id: Id.Lit_Chars val: '\t\techo "${HC}t:1:test" >expected &&\n' span_id: 366 ) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:367) (Token id:Id.Lit_Chars val:'\t\t\tcd t &&\n' span_id:368) (Token id:Id.Lit_Chars val:'\t\t\tgit grep -n -e test $H\n' span_id:369) (Token id:Id.Lit_Chars val:'\t\t) >actual &&\n' span_id:370) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:371) (Token id:Id.Lit_Chars val:'\t' span_id:372) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' (t-3)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:386) (Token id: Id.Lit_Chars val: '\t\techo "${HC}t/t:1:test" >expected &&\n' span_id: 387 ) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:388) (Token id:Id.Lit_Chars val:'\t\t\tcd t &&\n' span_id:389) (Token id:Id.Lit_Chars val:'\t\t\tgit grep --full-name -n -e test $H\n' span_id:390) (Token id:Id.Lit_Chars val:'\t\t) >actual &&\n' span_id:391) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:392) (Token id:Id.Lit_Chars val:'\t' span_id:393) ) } ) (C {(test_expect_success)} {(DQ ('grep -c ') ($ Id.VSub_DollarName '$L') (' (no /dev/null)'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:407) (Token id: Id.Lit_Chars val: '\t\t! git grep -c test $H | grep /dev/null\n' span_id: 408 ) (Token id:Id.Lit_Chars val:'\t' span_id:409) ) } ) (C {(test_expect_success)} {(DQ ('grep --max-depth -1 ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:422) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:423) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}t/a/v:1:vvv\n' span_id:424) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}t/v:1:vvv\n' span_id: 425 ) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}v:1:vvv\n' span_id:426) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:427) (Token id:Id.Lit_Chars val:'\t\tgit grep --max-depth -1 -n -e vvv $H >actual &&\n' span_id:428) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 429 ) (Token id:Id.Lit_Chars val:'\t' span_id:430) ) } ) (C {(test_expect_success)} {(DQ ('grep --max-depth 0 ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:443) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:444) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}v:1:vvv\n' span_id:445) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:446) (Token id:Id.Lit_Chars val:'\t\tgit grep --max-depth 0 -n -e vvv $H >actual &&\n' span_id:447) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 448 ) (Token id:Id.Lit_Chars val:'\t' span_id:449) ) } ) (C {(test_expect_success)} {(DQ ("grep --max-depth 0 -- '*' ") ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:462) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:463) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}t/a/v:1:vvv\n' span_id:464) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}t/v:1:vvv\n' span_id: 465 ) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}v:1:vvv\n' span_id:466) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:467) (Token id:Id.Lit_Chars val:'\t\tgit grep --max-depth 0 -n -e vvv $H -- "*" >actual &&\n' span_id:468) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 469 ) (Token id:Id.Lit_Chars val:'\t' span_id:470) ) } ) (C {(test_expect_success)} {(DQ ('grep --max-depth 1 ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:483) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:484) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}t/v:1:vvv\n' span_id:485) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}v:1:vvv\n' span_id: 486 ) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:487) (Token id: Id.Lit_Chars val: '\t\tgit grep --max-depth 1 -n -e vvv $H >actual &&\n' span_id: 488 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:489) (Token id:Id.Lit_Chars val:'\t' span_id:490) ) } ) (C {(test_expect_success)} {(DQ ('grep --max-depth 0 -- t ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:503) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:504) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}t/v:1:vvv\n' span_id:505) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:506) (Token id:Id.Lit_Chars val:'\t\tgit grep --max-depth 0 -n -e vvv $H -- t >actual &&\n' span_id:507) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 508 ) (Token id:Id.Lit_Chars val:'\t' span_id:509) ) } ) (C {(test_expect_success)} {(DQ ('grep --max-depth 0 -- . t ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:522) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:523) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}t/v:1:vvv\n' span_id:524) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}v:1:vvv\n' span_id: 525 ) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:526) (Token id: Id.Lit_Chars val: '\t\tgit grep --max-depth 0 -n -e vvv $H -- . t >actual &&\n' span_id: 527 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:528) (Token id:Id.Lit_Chars val:'\t' span_id:529) ) } ) (C {(test_expect_success)} {(DQ ('grep --max-depth 0 -- t . ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:542) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:543) (Token id:Id.Lit_Chars val:'\t\t\techo ${HC}t/v:1:vvv\n' span_id:544) (Token id: Id.Lit_Chars val: '\t\t\techo ${HC}v:1:vvv\n' span_id: 545 ) (Token id:Id.Lit_Chars val:'\t\t} >expected &&\n' span_id:546) (Token id: Id.Lit_Chars val: '\t\tgit grep --max-depth 0 -n -e vvv $H -- t . >actual &&\n' span_id: 547 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:548) (Token id:Id.Lit_Chars val:'\t' span_id:549) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.extendedRegexp=false'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:562) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:a+bc" >expected &&\n' span_id: 563 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.extendedRegexp=false grep "a+b*c" $H ab >actual &&\n' span_id: 564 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:565) (Token id:Id.Lit_Chars val:'\t' span_id:566) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.extendedRegexp=true'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:580) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:abc" >expected &&\n' span_id: 581 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.extendedRegexp=true grep "a+b*c" $H ab >actual &&\n' span_id: 582 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:583) (Token id:Id.Lit_Chars val:'\t' span_id:584) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.patterntype=basic'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:598) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:a+bc" >expected &&\n' span_id: 599 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.patterntype=basic grep "a+b*c" $H ab >actual &&\n' span_id: 600 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:601) (Token id:Id.Lit_Chars val:'\t' span_id:602) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.patterntype=extended'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:616) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:abc" >expected &&\n' span_id: 617 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.patterntype=extended grep "a+b*c" $H ab >actual &&\n' span_id: 618 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:619) (Token id:Id.Lit_Chars val:'\t' span_id:620) ) } ) (C {(test_expect_success)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.patterntype=fixed'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:634) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:a+b*c" >expected &&\n' span_id: 635 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.patterntype=fixed grep "a+b*c" $H ab >actual &&\n' span_id: 636 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:637) (Token id:Id.Lit_Chars val:'\t' span_id:638) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.patterntype=perl'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:654) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:a+b*c" >expected &&\n' span_id: 655 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.patterntype=perl grep "a\\x{2b}b\\x{2a}c" $H ab >actual &&\n' span_id: 656 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:657) (Token id:Id.Lit_Chars val:'\t' span_id:658) ) } ) (C {(test_expect_success)} { (DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.patternType=default and grep.extendedRegexp=true') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:672) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:abc" >expected &&\n' span_id: 673 ) (Token id:Id.Lit_Chars val:'\t\tgit \\\n' span_id:674) (Token id: Id.Lit_Chars val: '\t\t\t-c grep.patternType=default \\\n' span_id: 675 ) (Token id:Id.Lit_Chars val:'\t\t\t-c grep.extendedRegexp=true \\\n' span_id:676) (Token id: Id.Lit_Chars val: '\t\t\tgrep "a+b*c" $H ab >actual &&\n' span_id: 677 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:678) (Token id:Id.Lit_Chars val:'\t' span_id:679) ) } ) (C {(test_expect_success)} { (DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.extendedRegexp=true and grep.patternType=default') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:693) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:abc" >expected &&\n' span_id: 694 ) (Token id:Id.Lit_Chars val:'\t\tgit \\\n' span_id:695) (Token id: Id.Lit_Chars val: '\t\t\t-c grep.extendedRegexp=true \\\n' span_id: 696 ) (Token id:Id.Lit_Chars val:'\t\t\t-c grep.patternType=default \\\n' span_id:697) (Token id: Id.Lit_Chars val: '\t\t\tgrep "a+b*c" $H ab >actual &&\n' span_id: 698 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:699) (Token id:Id.Lit_Chars val:'\t' span_id:700) ) } ) (C {(test_expect_success)} { (DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.patternType=extended and grep.extendedRegexp=false') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:714) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:abc" >expected &&\n' span_id: 715 ) (Token id:Id.Lit_Chars val:'\t\tgit \\\n' span_id:716) (Token id: Id.Lit_Chars val: '\t\t\t-c grep.patternType=extended \\\n' span_id: 717 ) (Token id:Id.Lit_Chars val:'\t\t\t-c grep.extendedRegexp=false \\\n' span_id:718) (Token id: Id.Lit_Chars val: '\t\t\tgrep "a+b*c" $H ab >actual &&\n' span_id: 719 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:720) (Token id:Id.Lit_Chars val:'\t' span_id:721) ) } ) (C {(test_expect_success)} { (DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.patternType=basic and grep.extendedRegexp=true') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:735) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:a+bc" >expected &&\n' span_id: 736 ) (Token id:Id.Lit_Chars val:'\t\tgit \\\n' span_id:737) (Token id: Id.Lit_Chars val: '\t\t\t-c grep.patternType=basic \\\n' span_id: 738 ) (Token id:Id.Lit_Chars val:'\t\t\t-c grep.extendedRegexp=true \\\n' span_id:739) (Token id: Id.Lit_Chars val: '\t\t\tgrep "a+b*c" $H ab >actual &&\n' span_id: 740 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:741) (Token id:Id.Lit_Chars val:'\t' span_id:742) ) } ) (C {(test_expect_success)} { (DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.extendedRegexp=false and grep.patternType=extended') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:756) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:abc" >expected &&\n' span_id: 757 ) (Token id:Id.Lit_Chars val:'\t\tgit \\\n' span_id:758) (Token id: Id.Lit_Chars val: '\t\t\t-c grep.extendedRegexp=false \\\n' span_id: 759 ) (Token id:Id.Lit_Chars val:'\t\t\t-c grep.patternType=extended \\\n' span_id:760) (Token id: Id.Lit_Chars val: '\t\t\tgrep "a+b*c" $H ab >actual &&\n' span_id: 761 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:762) (Token id:Id.Lit_Chars val:'\t' span_id:763) ) } ) (C {(test_expect_success)} { (DQ ('grep ') ($ Id.VSub_DollarName '$L') (' with grep.extendedRegexp=true and grep.patternType=basic') ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:777) (Token id: Id.Lit_Chars val: '\t\techo "${HC}ab:a+bc" >expected &&\n' span_id: 778 ) (Token id:Id.Lit_Chars val:'\t\tgit \\\n' span_id:779) (Token id: Id.Lit_Chars val: '\t\t\t-c grep.extendedRegexp=true \\\n' span_id: 780 ) (Token id:Id.Lit_Chars val:'\t\t\t-c grep.patternType=basic \\\n' span_id:781) (Token id: Id.Lit_Chars val: '\t\t\tgrep "a+b*c" $H ab >actual &&\n' span_id: 782 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:783) (Token id:Id.Lit_Chars val:'\t' span_id:784) ) } ) (C {(test_expect_success)} {(DQ ('grep --count ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:797) (Token id: Id.Lit_Chars val: '\t\techo ${HC}ab:3 >expected &&\n' span_id: 798 ) (Token id:Id.Lit_Chars val:'\t\tgit grep --count -e b $H -- ab >actual &&\n' span_id:799) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 800 ) (Token id:Id.Lit_Chars val:'\t' span_id:801) ) } ) (C {(test_expect_success)} {(DQ ('grep --count -h ') ($ Id.VSub_DollarName '$L'))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:814) (Token id: Id.Lit_Chars val: '\t\techo 3 >expected &&\n' span_id: 815 ) (Token id:Id.Lit_Chars val:'\t\tgit grep --count -h -e b $H -- ab >actual &&\n' span_id:816) (Token id: Id.Lit_Chars val: '\t\ttest_cmp expected actual\n' span_id: 817 ) (Token id:Id.Lit_Chars val:'\t' span_id:818) ) } ) ] ) ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:826) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:829) fd: -1 here_begin: {(EOF)} here_end_span_id: 834 stdin_parts: [('file\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -l -C' span_id:838))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:842) (Token id:Id.Lit_Chars val:'\tgit grep -l -C1 foo >actual &&\n' span_id:843) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:844) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:850) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:853) fd: -1 here_begin: {(EOF)} here_end_span_id: 858 stdin_parts: [('file:5\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -c -C' span_id:862))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:866) (Token id:Id.Lit_Chars val:'\tgit grep -c -C1 foo >actual &&\n' span_id:867) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:868) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -L -C' span_id:875))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:879) (Token id:Id.Lit_Chars val:'\tgit ls-files >expected &&\n' span_id:880) (Token id:Id.Lit_Chars val:'\tgit grep -L -C1 nonexistent_string >actual &&\n' span_id:881) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:882) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:888) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:891) fd: -1 here_begin: {(EOF)} here_end_span_id: 896 stdin_parts: [('file:foo mmap bar_mmap\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -e A --and -e B' span_id:901))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:905) (Token id: Id.Lit_Chars val: '\tgit grep -e "foo mmap" --and -e bar_mmap >actual &&\n' span_id: 906 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:907) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:913) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:916) fd: -1 here_begin: {(EOF)} here_end_span_id: 922 stdin_parts: [('file:foo_mmap bar mmap\n') ('file:foo_mmap bar mmap baz\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep ( -e A --or -e B ) --and -e B' span_id:928))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:932) (Token id: Id.Lit_Chars val: '\tgit grep \\( -e foo_ --or -e baz \\) \\\n' span_id: 933 ) (Token id:Id.Lit_Chars val:'\t\t--and -e " mmap" >actual &&\n' span_id:934) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:935) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:941) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:944) fd: -1 here_begin: {(EOF)} here_end_span_id: 949 stdin_parts: [('file:foo mmap bar\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -e A --and --not -e B' span_id:954))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:958) (Token id: Id.Lit_Chars val: '\tgit grep -e "foo mmap" --and --not -e bar_mmap >actual &&\n' span_id: 959 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:960) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep should ignore GREP_OPTIONS' span_id:967))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:971) (Token id: Id.Lit_Chars val: '\tGREP_OPTIONS=-v git grep " mmap bar\\$" >actual &&\n' span_id: 972 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:973) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -f, non-existent file' span_id:980))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:984) (Token id:Id.Lit_Chars val:'\ttest_must_fail git grep -f patterns\n' span_id:985) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:991) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:994) fd: -1 here_begin: {(EOF)} here_end_span_id: 1003 stdin_parts: [ ('file:foo mmap bar\n') ('file:foo_mmap bar\n') ('file:foo_mmap bar mmap\n') ('file:foo mmap bar_mmap\n') ('file:foo_mmap bar mmap baz\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1007) fd: -1 arg_word: {(pattern)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1010) fd: -1 here_begin: {(EOF)} here_end_span_id: 1015 stdin_parts: [('mmap\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -f, one pattern' span_id:1020))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1024) (Token id:Id.Lit_Chars val:'\tgit grep -f pattern >actual &&\n' span_id:1025) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1026) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1032) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1035) fd: -1 here_begin: {(EOF)} here_end_span_id: 1047 stdin_parts: [ ('file:foo mmap bar\n') ('file:foo_mmap bar\n') ('file:foo_mmap bar mmap\n') ('file:foo mmap bar_mmap\n') ('file:foo_mmap bar mmap baz\n') ('t/a/v:vvv\n') ('t/v:vvv\n') ('v:vvv\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1051) fd: -1 arg_word: {(patterns)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1054) fd: -1 here_begin: {(EOF)} here_end_span_id: 1060 stdin_parts: [('mmap\n') ('vvv\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -f, multiple patterns' span_id:1065))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1069) (Token id:Id.Lit_Chars val:'\tgit grep -f patterns >actual &&\n' span_id:1070) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1071) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep, multiple patterns' span_id:1078))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1082) (Token id: Id.Lit_Chars val: '\tgit grep "$(cat patterns)" >actual &&\n' span_id: 1083 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1084) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1090) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1093) fd: -1 here_begin: {(EOF)} here_end_span_id: 1105 stdin_parts: [ ('file:foo mmap bar\n') ('file:foo_mmap bar\n') ('file:foo_mmap bar mmap\n') ('file:foo mmap bar_mmap\n') ('file:foo_mmap bar mmap baz\n') ('t/a/v:vvv\n') ('t/v:vvv\n') ('v:vvv\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1109) fd: -1 arg_word: {(patterns)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1112) fd: -1 here_begin: {(EOF)} here_end_span_id: 1121 stdin_parts: [('\n') ('mmap\n') ('\n') ('vvv\n') ('\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -f, ignore empty lines' span_id:1126))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1130) (Token id:Id.Lit_Chars val:'\tgit grep -f patterns >actual &&\n' span_id:1131) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1132) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep -f, ignore empty lines, read patterns from stdin' span_id: 1139 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1143) (Token id:Id.Lit_Chars val:'\tgit grep -f - <patterns >actual &&\n' span_id:1144) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1145) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1151) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1154) fd: -1 here_begin: {(EOF)} here_end_span_id: 1161 stdin_parts: [('y:y yy\n') ('--\n') ('z:zzz\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -q, silently report matches' span_id:1166))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1170) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:1171) (Token id:Id.Lit_Chars val:'\tgit grep -q mmap >actual &&\n' span_id:1172) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual &&\n' span_id:1173) (Token id:Id.Lit_Chars val:'\ttest_must_fail git grep -q qfwfq >actual &&\n' span_id:1174) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual\n' span_id:1175) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -C1 hunk mark between files' span_id:1182))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1186) (Token id:Id.Lit_Chars val:'\tgit grep -C1 "^[yz]" >actual &&\n' span_id:1187) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1188) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep setup' span_id:1195))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1199) (Token id:Id.Lit_Chars val:'\techo a >>file &&\n' span_id:1200) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1201) (Token id: Id.Lit_Chars val: '\tGIT_AUTHOR_NAME="With * Asterisk" \\\n' span_id: 1202 ) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_EMAIL="xyzzy@frotz.com" \\\n' span_id:1203) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "second" &&\n' span_id:1204) (Token id:Id.Lit_Chars val:'\n' span_id:1205) (Token id:Id.Lit_Chars val:'\techo a >>file &&\n' span_id:1206) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1207) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "third" &&\n' span_id:1208) (Token id:Id.Lit_Chars val:'\n' span_id:1209) (Token id:Id.Lit_Chars val:'\techo a >>file &&\n' span_id:1210) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1211) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME="Night Fall" \\\n' span_id:1212) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_EMAIL="nitfol@frobozz.com" \\\n' span_id:1213) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "fourth"\n' span_id:1214) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (1)' span_id:1221))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1225) (Token id: Id.Lit_Chars val: '\tgit log --author=author --pretty=tformat:%s >actual &&\n' span_id: 1226 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1227) (Token id:Id.Lit_Chars val:'\t\techo third && echo initial\n' span_id:1228) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1229) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1230) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (2)' span_id:1237))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1241) (Token id: Id.Lit_Chars val: '\tgit log --author=" * " -F --pretty=tformat:%s >actual &&\n' span_id: 1242 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1243) (Token id:Id.Lit_Chars val:'\t\techo second\n' span_id:1244) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1245) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1246) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (3)' span_id:1253))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1257) (Token id: Id.Lit_Chars val: '\tgit log --author="^A U" --pretty=tformat:%s >actual &&\n' span_id: 1258 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1259) (Token id:Id.Lit_Chars val:'\t\techo third && echo initial\n' span_id:1260) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1261) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1262) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (4)' span_id:1269))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1273) (Token id: Id.Lit_Chars val: '\tgit log --author="frotz\\.com>$" --pretty=tformat:%s >actual &&\n' span_id: 1274 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1275) (Token id:Id.Lit_Chars val:'\t\techo second\n' span_id:1276) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1277) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1278) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (5)' span_id:1285))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1289) (Token id: Id.Lit_Chars val: '\tgit log --author=Thor -F --pretty=tformat:%s >actual &&\n' span_id: 1290 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1291) (Token id:Id.Lit_Chars val:'\t\techo third && echo initial\n' span_id:1292) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1293) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1294) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (6)' span_id:1301))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1305) (Token id: Id.Lit_Chars val: '\tgit log --author=-0700 --pretty=tformat:%s >actual &&\n' span_id: 1306 ) (Token id:Id.Lit_Chars val:'\t>expect &&\n' span_id:1307) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1308) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (7)' span_id:1315))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1319) (Token id: Id.Lit_Chars val: '\tgit log -g --grep-reflog="commit: third" --pretty=tformat:%s >actual &&\n' span_id: 1320 ) (Token id:Id.Lit_Chars val:'\techo third >expect &&\n' span_id:1321) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1322) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (8)' span_id:1329))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1333) (Token id: Id.Lit_Chars val: '\tgit log -g --grep-reflog="commit: third" --grep-reflog="commit: second" --pretty=tformat:%s >actual &&\n' span_id: 1334 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1335) (Token id:Id.Lit_Chars val:'\t\techo third && echo second\n' span_id:1336) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1337) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1338) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (9)' span_id:1345))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1349) (Token id: Id.Lit_Chars val: '\tgit log -g --grep-reflog="commit: third" --author="Thor" --pretty=tformat:%s >actual &&\n' span_id: 1350 ) (Token id:Id.Lit_Chars val:'\techo third >expect &&\n' span_id:1351) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1352) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log grep (9)' span_id:1359))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1363) (Token id: Id.Lit_Chars val: '\tgit log -g --grep-reflog="commit: third" --author="non-existent" --pretty=tformat:%s >actual &&\n' span_id: 1364 ) (Token id:Id.Lit_Chars val:'\t: >expect &&\n' span_id:1365) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1366) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --grep-reflog can only be used under -g' span_id:1373))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1377) (Token id: Id.Lit_Chars val: '\ttest_must_fail git log --grep-reflog="commit: third"\n' span_id: 1378 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log with multiple --grep uses union' span_id:1385))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1389) (Token id: Id.Lit_Chars val: '\tgit log --grep=i --grep=r --format=%s >actual &&\n' span_id: 1390 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1391) (Token id: Id.Lit_Chars val: '\t\techo fourth && echo third && echo initial\n' span_id: 1392 ) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1393) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1394) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log --all-match with multiple --grep uses intersection' span_id: 1401 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1405) (Token id: Id.Lit_Chars val: '\tgit log --all-match --grep=i --grep=r --format=%s >actual &&\n' span_id: 1406 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1407) (Token id:Id.Lit_Chars val:'\t\techo third\n' span_id:1408) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1409) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1410) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log with multiple --author uses union' span_id:1417))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1421) (Token id: Id.Lit_Chars val: '\tgit log --author="Thor" --author="Aster" --format=%s >actual &&\n' span_id: 1422 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1423) (Token id: Id.Lit_Chars val: '\t echo third && echo second && echo initial\n' span_id: 1424 ) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1425) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1426) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log --all-match with multiple --author still uses union' span_id: 1433 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1437) (Token id: Id.Lit_Chars val: '\tgit log --all-match --author="Thor" --author="Aster" --format=%s >actual &&\n' span_id: 1438 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1439) (Token id: Id.Lit_Chars val: '\t echo third && echo second && echo initial\n' span_id: 1440 ) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1441) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1442) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --grep --author uses intersection' span_id:1449))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1453) (Token id: Id.Lit_Chars val: '\t# grep matches only third and fourth\n' span_id: 1454 ) (Token id:Id.Lit_Chars val:'\t# author matches only initial and third\n' span_id:1455) (Token id: Id.Lit_Chars val: '\tgit log --author="A U Thor" --grep=r --format=%s >actual &&\n' span_id: 1456 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1457) (Token id:Id.Lit_Chars val:'\t\techo third\n' span_id:1458) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1459) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1460) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log --grep --grep --author takes union of greps and intersects with author' span_id: 1467 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1471) (Token id: Id.Lit_Chars val: '\t# grep matches initial and second but not third\n' span_id: 1472 ) (Token id:Id.Lit_Chars val:'\t# author matches only initial and third\n' span_id:1473) (Token id: Id.Lit_Chars val: '\tgit log --author="A U Thor" --grep=s --grep=l --format=%s >actual &&\n' span_id: 1474 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1475) (Token id:Id.Lit_Chars val:'\t\techo initial\n' span_id:1476) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1477) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1478) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log ---all-match -grep --author --author still takes union of authors and intersects with grep' span_id: 1485 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1489) (Token id: Id.Lit_Chars val: '\t# grep matches only initial and third\n' span_id: 1490 ) (Token id:Id.Lit_Chars val:'\t# author matches all but second\n' span_id:1491) (Token id: Id.Lit_Chars val: '\tgit log --all-match --author="Thor" --author="Night" --grep=i --format=%s >actual &&\n' span_id: 1492 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1493) (Token id:Id.Lit_Chars val:'\t echo third && echo initial\n' span_id:1494) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1495) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1496) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log --grep --author --author takes union of authors and intersects with grep' span_id: 1503 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1507) (Token id: Id.Lit_Chars val: '\t# grep matches only initial and third\n' span_id: 1508 ) (Token id:Id.Lit_Chars val:'\t# author matches all but second\n' span_id:1509) (Token id: Id.Lit_Chars val: '\tgit log --author="Thor" --author="Night" --grep=i --format=%s >actual &&\n' span_id: 1510 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1511) (Token id:Id.Lit_Chars val:'\t echo third && echo initial\n' span_id:1512) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1513) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1514) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'log --all-match --grep --grep --author takes intersection' span_id: 1521 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1525) (Token id:Id.Lit_Chars val:'\t# grep matches only third\n' span_id:1526) (Token id:Id.Lit_Chars val:'\t# author matches only initial and third\n' span_id:1527) (Token id: Id.Lit_Chars val: '\tgit log --all-match --author="A U Thor" --grep=i --grep=r --format=%s >actual &&\n' span_id: 1528 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1529) (Token id:Id.Lit_Chars val:'\t\techo third\n' span_id:1530) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1531) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1532) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --author does not search in timestamp' span_id:1539))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1543) (Token id:Id.Lit_Chars val:'\t: >expect &&\n' span_id:1544) (Token id:Id.Lit_Chars val:'\tgit log --author="$GIT_AUTHOR_DATE" >actual &&\n' span_id:1545) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1546) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'log --committer does not search in timestamp' span_id:1553))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1557) (Token id:Id.Lit_Chars val:'\t: >expect &&\n' span_id:1558) (Token id:Id.Lit_Chars val:'\tgit log --committer="$GIT_COMMITTER_DATE" >actual &&\n' span_id:1559) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1560) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep with CE_VALID file' span_id:1567))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1571) (Token id: Id.Lit_Chars val: '\tgit update-index --assume-unchanged t/t &&\n' span_id: 1572 ) (Token id:Id.Lit_Chars val:'\trm t/t &&\n' span_id:1573) (Token id: Id.Lit_Chars val: '\ttest "$(git grep test)" = "t/t:test" &&\n' span_id: 1574 ) (Token id:Id.Lit_Chars val:'\tgit update-index --no-assume-unchanged t/t &&\n' span_id:1575) (Token id:Id.Lit_Chars val:'\tgit checkout t/t\n' span_id:1576) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1582) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1585) fd: -1 here_begin: {(EOF)} here_end_span_id: 1591 stdin_parts: [('hello.c=#include <stdio.h>\n') ('hello.c:\treturn 0;\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -p with userdiff' span_id:1596))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1600) (Token id: Id.Lit_Chars val: '\tgit config diff.custom.funcname "^#" &&\n' span_id: 1601 ) (Token id:Id.Lit_Chars val:'\techo "hello.c diff=custom" >.gitattributes &&\n' span_id:1602) (Token id:Id.Lit_Chars val:'\tgit grep -p return >actual &&\n' span_id:1603) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1604) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1610) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1613) fd: -1 here_begin: {(EOF)} here_end_span_id: 1619 stdin_parts: [('hello.c=int main(int argc, const char **argv)\n') ('hello.c:\treturn 0;\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -p' span_id:1624))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1628) (Token id:Id.Lit_Chars val:'\trm -f .gitattributes &&\n' span_id:1629) (Token id:Id.Lit_Chars val:'\tgit grep -p return >actual &&\n' span_id:1630) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1631) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1637) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1640) fd: -1 here_begin: {(EOF)} here_end_span_id: 1656 stdin_parts: [ ('hello.c-#include <stdio.h>\n') ('hello.c-\n') ('hello.c=int main(int argc, const char **argv)\n') ('hello.c-{\n') ('hello.c-\tprintf(') (Id.Right_DoubleQuote '"') ('Hello world.') (Id.Lit_Other '\\') (n) (Id.Right_DoubleQuote '"') (');\n') ('hello.c:\treturn 0;\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -p -B5' span_id:1661))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1665) (Token id:Id.Lit_Chars val:'\tgit grep -p -B5 return >actual &&\n' span_id:1666) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1667) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1673) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1676) fd: -1 here_begin: {(EOF)} here_end_span_id: 1692 stdin_parts: [ ('hello.c=int main(int argc, const char **argv)\n') ('hello.c-{\n') ('hello.c-\tprintf(') (Id.Right_DoubleQuote '"') ('Hello world.') (Id.Lit_Other '\\') (n) (Id.Right_DoubleQuote '"') (');\n') ('hello.c:\treturn 0;\n') ('hello.c-\t/* char ?? */\n') ('hello.c-}\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -W' span_id:1697))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1701) (Token id:Id.Lit_Chars val:'\tgit grep -W return >actual &&\n' span_id:1702) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1703) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1709) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1712) fd: -1 here_begin: {(EOF)} here_end_span_id: 1718 stdin_parts: [('hello.c-#include <assert.h>\n') ('hello.c:#include <stdio.h>\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -W shows no trailing empty lines' span_id:1723))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1727) (Token id:Id.Lit_Chars val:'\tgit grep -W stdio >actual &&\n' span_id:1728) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1729) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1735) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1738) fd: -1 here_begin: {(EOF)} here_end_span_id: 1751 stdin_parts: [ ('hello.c=\tprintf(') (Id.Right_DoubleQuote '"') ('Hello world.') (Id.Lit_Other '\\') (n) (Id.Right_DoubleQuote '"') (');\n') ('hello.c:\treturn 0;\n') ('hello.c-\t/* char ?? */\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -W with userdiff' span_id:1756))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1760) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .gitattributes" &&\n' span_id: 1761 ) (Token id:Id.Lit_Chars val:'\tgit config diff.custom.xfuncname "(printf.*|})$" &&\n' span_id:1762) (Token id: Id.Lit_Chars val: '\techo "hello.c diff=custom" >.gitattributes &&\n' span_id: 1763 ) (Token id:Id.Lit_Chars val:'\tgit grep -W return >actual &&\n' span_id:1764) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1765) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep from a subdirectory to search wider area (1)' span_id: 1772 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1776) (Token id:Id.Lit_Chars val:'\tmkdir -p s &&\n' span_id:1777) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1778) (Token id:Id.Lit_Chars val:'\t\tcd s && git grep "x x x" ..\n' span_id:1779) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1780) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep from a subdirectory to search wider area (2)' span_id: 1787 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1791) (Token id:Id.Lit_Chars val:'\tmkdir -p s &&\n' span_id:1792) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1793) (Token id:Id.Lit_Chars val:'\t\tcd s || exit 1\n' span_id:1794) (Token id:Id.Lit_Chars val:'\t\t( git grep xxyyzz .. >out ; echo $? >status )\n' span_id:1795) (Token id:Id.Lit_Chars val:'\t\t! test -s out &&\n' span_id:1796) (Token id:Id.Lit_Chars val:'\t\ttest 1 = $(cat status)\n' span_id:1797) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1798) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1804) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1807) fd: -1 here_begin: {(EOF)} here_end_span_id: 1812 stdin_parts: [('hello.c:int main(int argc, const char **argv)\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -Fi' span_id:1817))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1821) (Token id:Id.Lit_Chars val:'\tgit grep -Fi "CHAR *" >actual &&\n' span_id:1822) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1823) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'outside of git repository' span_id:1830))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1834) (Token id:Id.Lit_Chars val:'\trm -fr non &&\n' span_id:1835) (Token id:Id.Lit_Chars val:'\tmkdir -p non/git/sub &&\n' span_id:1836) (Token id:Id.Lit_Chars val:'\techo hello >non/git/file1 &&\n' span_id:1837) (Token id:Id.Lit_Chars val:'\techo world >non/git/sub/file2 &&\n' span_id:1838) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1839) (Token id:Id.Lit_Chars val:'\t\techo file1:hello &&\n' span_id:1840) (Token id:Id.Lit_Chars val:'\t\techo sub/file2:world\n' span_id:1841) (Token id:Id.Lit_Chars val:'\t} >non/expect.full &&\n' span_id:1842) (Token id: Id.Lit_Chars val: '\techo file2:world >non/expect.sub &&\n' span_id: 1843 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1844) (Token id: Id.Lit_Chars val: '\t\tGIT_CEILING_DIRECTORIES="$(pwd)/non" &&\n' span_id: 1845 ) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:1846) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:1847) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git grep o &&\n' span_id:1848) (Token id: Id.Lit_Chars val: '\t\tgit grep --no-index o >../actual.full &&\n' span_id: 1849 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.full ../actual.full &&\n' span_id:1850) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:1851) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git grep o &&\n' span_id:1852) (Token id: Id.Lit_Chars val: '\t\tgit grep --no-index o >../../actual.sub &&\n' span_id: 1853 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../../expect.sub ../../actual.sub\n' span_id:1854) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1855) (Token id:Id.Lit_Chars val:'\n' span_id:1856) (Token id:Id.Lit_Chars val:'\techo ".*o*" >non/git/.gitignore &&\n' span_id:1857) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1858) (Token id: Id.Lit_Chars val: '\t\tGIT_CEILING_DIRECTORIES="$(pwd)/non" &&\n' span_id: 1859 ) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:1860) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:1861) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git grep o &&\n' span_id:1862) (Token id: Id.Lit_Chars val: '\t\tgit grep --no-index --exclude-standard o >../actual.full &&\n' span_id: 1863 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.full ../actual.full &&\n' span_id:1864) (Token id:Id.Lit_Chars val:'\n' span_id:1865) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:1866) (Token id:Id.Lit_Chars val:'\t\t\techo ".gitignore:.*o*" &&\n' span_id:1867) (Token id:Id.Lit_Chars val:'\t\t\tcat ../expect.full\n' span_id:1868) (Token id:Id.Lit_Chars val:'\t\t} >../expect.with.ignored &&\n' span_id:1869) (Token id: Id.Lit_Chars val: '\t\tgit grep --no-index --no-exclude o >../actual.full &&\n' span_id: 1870 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.with.ignored ../actual.full\n' span_id:1871) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1872) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'outside of git repository with fallbackToNoIndex' span_id: 1879 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1883) (Token id:Id.Lit_Chars val:'\trm -fr non &&\n' span_id:1884) (Token id:Id.Lit_Chars val:'\tmkdir -p non/git/sub &&\n' span_id:1885) (Token id:Id.Lit_Chars val:'\techo hello >non/git/file1 &&\n' span_id:1886) (Token id:Id.Lit_Chars val:'\techo world >non/git/sub/file2 &&\n' span_id:1887) (Token id:Id.Lit_Chars val:'\tcat <<-\\EOF >non/expect.full &&\n' span_id:1888) (Token id:Id.Lit_Chars val:'\tfile1:hello\n' span_id:1889) (Token id:Id.Lit_Chars val:'\tsub/file2:world\n' span_id:1890) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1891) (Token id: Id.Lit_Chars val: '\techo file2:world >non/expect.sub &&\n' span_id: 1892 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1893) (Token id: Id.Lit_Chars val: '\t\tGIT_CEILING_DIRECTORIES="$(pwd)/non" &&\n' span_id: 1894 ) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:1895) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:1896) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git -c grep.fallbackToNoIndex=false grep o &&\n' span_id: 1897 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.fallbackToNoIndex=true grep o >../actual.full &&\n' span_id: 1898 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.full ../actual.full &&\n' span_id:1899) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:1900) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git -c grep.fallbackToNoIndex=false grep o &&\n' span_id: 1901 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.fallbackToNoIndex=true grep o >../../actual.sub &&\n' span_id: 1902 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../../expect.sub ../../actual.sub\n' span_id:1903) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1904) (Token id:Id.Lit_Chars val:'\n' span_id:1905) (Token id:Id.Lit_Chars val:'\techo ".*o*" >non/git/.gitignore &&\n' span_id:1906) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1907) (Token id: Id.Lit_Chars val: '\t\tGIT_CEILING_DIRECTORIES="$(pwd)/non" &&\n' span_id: 1908 ) (Token id:Id.Lit_Chars val:'\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id:1909) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:1910) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git -c grep.fallbackToNoIndex=false grep o &&\n' span_id: 1911 ) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.fallbackToNoIndex=true grep --exclude-standard o >../actual.full &&\n' span_id: 1912 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.full ../actual.full &&\n' span_id:1913) (Token id:Id.Lit_Chars val:'\n' span_id:1914) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:1915) (Token id:Id.Lit_Chars val:'\t\t\techo ".gitignore:.*o*" &&\n' span_id:1916) (Token id:Id.Lit_Chars val:'\t\t\tcat ../expect.full\n' span_id:1917) (Token id:Id.Lit_Chars val:'\t\t} >../expect.with.ignored &&\n' span_id:1918) (Token id: Id.Lit_Chars val: '\t\tgit -c grep.fallbackToNoIndex grep --no-exclude o >../actual.full &&\n' span_id: 1919 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.with.ignored ../actual.full\n' span_id:1920) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1921) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'inside git repository but with --no-index' span_id:1928))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1932) (Token id:Id.Lit_Chars val:'\trm -fr is &&\n' span_id:1933) (Token id:Id.Lit_Chars val:'\tmkdir -p is/git/sub &&\n' span_id:1934) (Token id:Id.Lit_Chars val:'\techo hello >is/git/file1 &&\n' span_id:1935) (Token id:Id.Lit_Chars val:'\techo world >is/git/sub/file2 &&\n' span_id:1936) (Token id:Id.Lit_Chars val:'\techo ".*o*" >is/git/.gitignore &&\n' span_id:1937) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1938) (Token id:Id.Lit_Chars val:'\t\techo file1:hello &&\n' span_id:1939) (Token id:Id.Lit_Chars val:'\t\techo sub/file2:world\n' span_id:1940) (Token id:Id.Lit_Chars val:'\t} >is/expect.unignored &&\n' span_id:1941) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1942) (Token id:Id.Lit_Chars val:'\t\techo ".gitignore:.*o*" &&\n' span_id:1943) (Token id:Id.Lit_Chars val:'\t\tcat is/expect.unignored\n' span_id:1944) (Token id:Id.Lit_Chars val:'\t} >is/expect.full &&\n' span_id:1945) (Token id:Id.Lit_Chars val:'\t: >is/expect.empty &&\n' span_id:1946) (Token id:Id.Lit_Chars val:'\techo file2:world >is/expect.sub &&\n' span_id:1947) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1948) (Token id:Id.Lit_Chars val:'\t\tcd is/git &&\n' span_id:1949) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1950) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git grep o >../actual.full &&\n' span_id: 1951 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.empty ../actual.full &&\n' span_id:1952) (Token id:Id.Lit_Chars val:'\n' span_id:1953) (Token id:Id.Lit_Chars val:'\t\tgit grep --untracked o >../actual.unignored &&\n' span_id:1954) (Token id: Id.Lit_Chars val: '\t\ttest_cmp ../expect.unignored ../actual.unignored &&\n' span_id: 1955 ) (Token id:Id.Lit_Chars val:'\n' span_id:1956) (Token id: Id.Lit_Chars val: '\t\tgit grep --no-index o >../actual.full &&\n' span_id: 1957 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.full ../actual.full &&\n' span_id:1958) (Token id:Id.Lit_Chars val:'\n' span_id:1959) (Token id: Id.Lit_Chars val: '\t\tgit grep --no-index --exclude-standard o >../actual.unignored &&\n' span_id: 1960 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../expect.unignored ../actual.unignored &&\n' span_id:1961) (Token id:Id.Lit_Chars val:'\n' span_id:1962) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:1963) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git grep o >../../actual.sub &&\n' span_id: 1964 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../../expect.empty ../../actual.sub &&\n' span_id:1965) (Token id:Id.Lit_Chars val:'\n' span_id:1966) (Token id:Id.Lit_Chars val:'\t\tgit grep --no-index o >../../actual.sub &&\n' span_id:1967) (Token id: Id.Lit_Chars val: '\t\ttest_cmp ../../expect.sub ../../actual.sub &&\n' span_id: 1968 ) (Token id:Id.Lit_Chars val:'\n' span_id:1969) (Token id: Id.Lit_Chars val: '\t\tgit grep --untracked o >../../actual.sub &&\n' span_id: 1970 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp ../../expect.sub ../../actual.sub\n' span_id:1971) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1972) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep --no-index descends into repos, but not .git' span_id: 1979 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1983) (Token id:Id.Lit_Chars val:'\trm -fr non &&\n' span_id:1984) (Token id:Id.Lit_Chars val:'\tmkdir -p non/git &&\n' span_id:1985) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1986) (Token id:Id.Lit_Chars val:'\t\tGIT_CEILING_DIRECTORIES="$(pwd)/non" &&\n' span_id:1987) (Token id: Id.Lit_Chars val: '\t\texport GIT_CEILING_DIRECTORIES &&\n' span_id: 1988 ) (Token id:Id.Lit_Chars val:'\t\tcd non/git &&\n' span_id:1989) (Token id:Id.Lit_Chars val:'\n' span_id:1990) (Token id:Id.Lit_Chars val:'\t\techo magic >file &&\n' span_id:1991) (Token id:Id.Lit_Chars val:'\t\tgit init repo &&\n' span_id:1992) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:1993) (Token id:Id.Lit_Chars val:'\t\t\tcd repo &&\n' span_id:1994) (Token id:Id.Lit_Chars val:'\t\t\techo magic >file &&\n' span_id:1995) (Token id:Id.Lit_Chars val:'\t\t\tgit add file &&\n' span_id:1996) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m foo &&\n' span_id:1997) (Token id:Id.Lit_Chars val:'\t\t\techo magic >.git/file\n' span_id:1998) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:1999) (Token id:Id.Lit_Chars val:'\n' span_id:2000) (Token id:Id.Lit_Chars val:'\t\tcat >expect <<-\\EOF &&\n' span_id:2001) (Token id:Id.Lit_Chars val:'\t\tfile\n' span_id:2002) (Token id:Id.Lit_Chars val:'\t\trepo/file\n' span_id:2003) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:2004) (Token id: Id.Lit_Chars val: '\t\tgit grep -l --no-index magic >actual &&\n' span_id: 2005 ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:2006) (Token id:Id.Lit_Chars val:'\t)\n' span_id:2007) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup double-dash tests' span_id:2014))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2018) (Token id:Id.Lit_Chars val:'cat >double-dash <<EOF &&\n' span_id:2019) (Token id:Id.Lit_Chars val:'--\n' span_id:2020) (Token id:Id.Lit_Chars val:'->\n' span_id:2021) (Token id:Id.Lit_Chars val:'other\n' span_id:2022) (Token id:Id.Lit_Chars val:'EOF\n' span_id:2023) (Token id:Id.Lit_Chars val:'git add double-dash\n' span_id:2024) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2030) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2033) fd: -1 here_begin: {(EOF)} here_end_span_id: 2038 stdin_parts: [('double-dash:->\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -- pattern' span_id:2042))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2046) (Token id:Id.Lit_Chars val:'\tgit grep -- "->" >actual &&\n' span_id:2047) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2048) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -- pattern -- pathspec' span_id:2054))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2058) (Token id: Id.Lit_Chars val: '\tgit grep -- "->" -- double-dash >actual &&\n' span_id: 2059 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2060) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -e pattern -- path' span_id:2066))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2070) (Token id: Id.Lit_Chars val: '\tgit grep -e "->" -- double-dash >actual &&\n' span_id: 2071 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2072) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2078) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2081) fd: -1 here_begin: {(EOF)} here_end_span_id: 2086 stdin_parts: [('double-dash:--\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -e -- -- path' span_id:2090))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2094) (Token id: Id.Lit_Chars val: '\tgit grep -e -- -- double-dash >actual &&\n' span_id: 2095 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2096) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2102) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2105) fd: -1 here_begin: {(EOF)} here_end_span_id: 2117 stdin_parts: [ ('hello.c:int main(int argc, const char **argv)\n') ('hello.c:\tprintf(') (Id.Right_DoubleQuote '"') ('Hello world.') (Id.Lit_Other '\\') (n) (Id.Right_DoubleQuote '"') (');\n') ] ) ] ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep --perl-regexp pattern' span_id:2124))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2128) (Token id: Id.Lit_Chars val: '\tgit grep --perl-regexp "\\p{Ps}.*?\\p{Pe}" hello.c >actual &&\n' span_id: 2129 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2130) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P pattern' span_id:2139))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2143) (Token id: Id.Lit_Chars val: '\tgit grep -P "\\p{Ps}.*?\\p{Pe}" hello.c >actual &&\n' span_id: 2144 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2145) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep pattern with grep.extendedRegexp=true' span_id:2152))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2156) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:2157) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -c grep.extendedregexp=true \\\n' span_id:2158) (Token id: Id.Lit_Chars val: '\t\tgrep "\\p{Ps}.*?\\p{Pe}" hello.c >actual &&\n' span_id: 2159 ) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual\n' span_id:2160) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P pattern with grep.extendedRegexp=true' span_id:2169))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2173) (Token id:Id.Lit_Chars val:'\tgit -c grep.extendedregexp=true \\\n' span_id:2174) (Token id:Id.Lit_Chars val:'\t\tgrep -P "\\p{Ps}.*?\\p{Pe}" hello.c >actual &&\n' span_id:2175) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2176) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P -v pattern' span_id:2185))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2189) (Token id:Id.Lit_Chars val:'\t{\n' span_id:2190) (Token id:Id.Lit_Chars val:'\t\techo "ab:a+b*c"\n' span_id:2191) (Token id:Id.Lit_Chars val:'\t\techo "ab:a+bc"\n' span_id:2192) (Token id:Id.Lit_Chars val:'\t} >expected &&\n' span_id:2193) (Token id:Id.Lit_Chars val:'\tgit grep -P -v "abc" ab >actual &&\n' span_id:2194) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2195) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P -i pattern' span_id:2204))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2208) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:2209) (Token id:Id.Lit_Chars val:'\thello.c:\tprintf("Hello world.\\n");\n' span_id:2210) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2211) (Token id: Id.Lit_Chars val: '\tgit grep -P -i "PRINTF\\([^\\d]+\\)" hello.c >actual &&\n' span_id: 2212 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2213) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P -w pattern' span_id:2222))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2226) (Token id:Id.Lit_Chars val:'\t{\n' span_id:2227) (Token id:Id.Lit_Chars val:'\t\techo "hello_world:Hello world"\n' span_id:2228) (Token id:Id.Lit_Chars val:'\t\techo "hello_world:HeLLo world"\n' span_id:2229) (Token id:Id.Lit_Chars val:'\t} >expected &&\n' span_id:2230) (Token id: Id.Lit_Chars val: '\tgit grep -P -w "He((?i)ll)o" hello_world >actual &&\n' span_id: 2231 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2232) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -G invalidpattern properly dies ' span_id:2239))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2243) (Token id:Id.Lit_Chars val:'\ttest_must_fail git grep -G "a["\n' span_id:2244) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep invalidpattern properly dies with grep.patternType=basic' span_id: 2251 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2255) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -c grep.patterntype=basic grep "a["\n' span_id: 2256 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -E invalidpattern properly dies ' span_id:2263))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2267) (Token id:Id.Lit_Chars val:'\ttest_must_fail git grep -E "a["\n' span_id:2268) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep invalidpattern properly dies with grep.patternType=extended' span_id: 2275 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2279) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -c grep.patterntype=extended grep "a["\n' span_id: 2280 ) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P invalidpattern properly dies ' span_id:2289))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2293) (Token id:Id.Lit_Chars val:'\ttest_must_fail git grep -P "a["\n' span_id:2294) ) } ) (C {(test_expect_success)} {(LIBPCRE)} { (SQ (Token id: Id.Lit_Chars val: 'grep invalidpattern properly dies with grep.patternType=perl' span_id: 2303 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2307) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -c grep.patterntype=perl grep "a["\n' span_id: 2308 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -G -E -F pattern' span_id:2315))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2319) (Token id:Id.Lit_Chars val:'\techo "ab:a+b*c" >expected &&\n' span_id:2320) (Token id:Id.Lit_Chars val:'\tgit grep -G -E -F "a+b*c" ab >actual &&\n' span_id:2321) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2322) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep pattern with grep.patternType=basic, =extended, =fixed' span_id: 2329 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2333) (Token id:Id.Lit_Chars val:'\techo "ab:a+b*c" >expected &&\n' span_id:2334) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2335) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=basic \\\n' span_id:2336) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=extended \\\n' span_id:2337) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2338) (Token id:Id.Lit_Chars val:'\t\tgrep "a+b*c" ab >actual &&\n' span_id:2339) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2340) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -E -F -G pattern' span_id:2347))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2351) (Token id:Id.Lit_Chars val:'\techo "ab:a+bc" >expected &&\n' span_id:2352) (Token id:Id.Lit_Chars val:'\tgit grep -E -F -G "a+b*c" ab >actual &&\n' span_id:2353) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2354) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep pattern with grep.patternType=extended, =fixed, =basic' span_id: 2361 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2365) (Token id:Id.Lit_Chars val:'\techo "ab:a+bc" >expected &&\n' span_id:2366) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2367) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=extended \\\n' span_id:2368) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2369) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=basic \\\n' span_id:2370) (Token id:Id.Lit_Chars val:'\t\tgrep "a+b*c" ab >actual &&\n' span_id:2371) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2372) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -F -G -E pattern' span_id:2379))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2383) (Token id:Id.Lit_Chars val:'\techo "ab:abc" >expected &&\n' span_id:2384) (Token id:Id.Lit_Chars val:'\tgit grep -F -G -E "a+b*c" ab >actual &&\n' span_id:2385) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2386) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep pattern with grep.patternType=fixed, =basic, =extended' span_id: 2393 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2397) (Token id:Id.Lit_Chars val:'\techo "ab:abc" >expected &&\n' span_id:2398) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2399) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2400) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=basic \\\n' span_id:2401) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=extended \\\n' span_id:2402) (Token id:Id.Lit_Chars val:'\t\tgrep "a+b*c" ab >actual &&\n' span_id:2403) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2404) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -G -F -P -E pattern' span_id:2411))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2415) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:2416) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep -G -F -P -E "a\\x{2b}b\\x{2a}c" ab >actual &&\n' span_id: 2417 ) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual\n' span_id:2418) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep pattern with grep.patternType=fixed, =basic, =perl, =extended' span_id: 2425 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2429) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:2430) (Token id:Id.Lit_Chars val:'\ttest_must_fail git \\\n' span_id:2431) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2432) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=basic \\\n' span_id:2433) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=perl \\\n' span_id:2434) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=extended \\\n' span_id:2435) (Token id: Id.Lit_Chars val: '\t\tgrep "a\\x{2b}b\\x{2a}c" ab >actual &&\n' span_id: 2436 ) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual\n' span_id:2437) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -G -F -E -P pattern' span_id:2446))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2450) (Token id:Id.Lit_Chars val:'\techo "ab:a+b*c" >expected &&\n' span_id:2451) (Token id:Id.Lit_Chars val:'\tgit grep -G -F -E -P "a\\x{2b}b\\x{2a}c" ab >actual &&\n' span_id:2452) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2453) ) } ) (C {(test_expect_success)} {(LIBPCRE)} { (SQ (Token id: Id.Lit_Chars val: 'grep pattern with grep.patternType=fixed, =basic, =extended, =perl' span_id: 2462 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2466) (Token id:Id.Lit_Chars val:'\techo "ab:a+b*c" >expected &&\n' span_id:2467) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2468) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2469) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=basic \\\n' span_id:2470) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=extended \\\n' span_id:2471) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=perl \\\n' span_id:2472) (Token id: Id.Lit_Chars val: '\t\tgrep "a\\x{2b}b\\x{2a}c" ab >actual &&\n' span_id: 2473 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2474) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P pattern with grep.patternType=fixed' span_id:2483))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2487) (Token id:Id.Lit_Chars val:'\techo "ab:a+b*c" >expected &&\n' span_id:2488) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2489) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2490) (Token id:Id.Lit_Chars val:'\t\tgrep -P "a\\x{2b}b\\x{2a}c" ab >actual &&\n' span_id:2491) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2492) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -F pattern with grep.patternType=basic' span_id:2499))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2503) (Token id:Id.Lit_Chars val:'\techo "ab:a+b*c" >expected &&\n' span_id:2504) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2505) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=basic \\\n' span_id:2506) (Token id:Id.Lit_Chars val:'\t\tgrep -F "*c" ab >actual &&\n' span_id:2507) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2508) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -G pattern with grep.patternType=fixed' span_id:2515))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2519) (Token id:Id.Lit_Chars val:'\t{\n' span_id:2520) (Token id:Id.Lit_Chars val:'\t\techo "ab:a+b*c"\n' span_id:2521) (Token id:Id.Lit_Chars val:'\t\techo "ab:a+bc"\n' span_id:2522) (Token id:Id.Lit_Chars val:'\t} >expected &&\n' span_id:2523) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2524) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2525) (Token id:Id.Lit_Chars val:'\t\tgrep -G "a+b" ab >actual &&\n' span_id:2526) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2527) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep -E pattern with grep.patternType=fixed' span_id:2534))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2538) (Token id:Id.Lit_Chars val:'\t{\n' span_id:2539) (Token id:Id.Lit_Chars val:'\t\techo "ab:a+b*c"\n' span_id:2540) (Token id:Id.Lit_Chars val:'\t\techo "ab:a+bc"\n' span_id:2541) (Token id:Id.Lit_Chars val:'\t\techo "ab:abc"\n' span_id:2542) (Token id:Id.Lit_Chars val:'\t} >expected &&\n' span_id:2543) (Token id:Id.Lit_Chars val:'\tgit \\\n' span_id:2544) (Token id:Id.Lit_Chars val:'\t\t-c grep.patterntype=fixed \\\n' span_id:2545) (Token id:Id.Lit_Chars val:'\t\tgrep -E "a+" ab >actual &&\n' span_id:2546) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2547) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2553) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2556) fd: -1 here_begin: {(EOF)} here_end_span_id: 2568 stdin_parts: [ ('hello.c<RED>:<RESET>int main(int argc, const char **argv)\n') ('hello.c<RED>-<RESET>{\n') ('<RED>--<RESET>\n') ('hello.c<RED>:<RESET>\t/* char ?? */\n') ('hello.c<RED>-<RESET>}\n') ('<RED>--<RESET>\n') ('hello_world<RED>:<RESET>Hello_world\n') ('hello_world<RED>-<RESET>HeLLo_world\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep --color, separator' span_id:2573))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2577) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.context\t\tnormal &&\n' span_id: 2578 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.filename\t\tnormal &&\n' span_id:2579) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.function\t\tnormal &&\n' span_id: 2580 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.linenumber\tnormal &&\n' span_id:2581) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.match\t\tnormal &&\n' span_id: 2582 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.selected\t\tnormal &&\n' span_id:2583) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.separator\tred &&\n' span_id: 2584 ) (Token id:Id.Lit_Chars val:'\n' span_id:2585) (Token id: Id.Lit_Chars val: '\tgit grep --color=always -A1 -e char -e lo_w hello.c hello_world |\n' span_id: 2586 ) (Token id:Id.Lit_Chars val:'\ttest_decode_color >actual &&\n' span_id:2587) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2588) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2594) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2597) fd: -1 here_begin: {(EOF)} here_end_span_id: 2605 stdin_parts: [ ('hello.c:int main(int argc, const char **argv)\n') ('hello.c:\t/* char ?? */\n') ('\n') ('hello_world:Hello_world\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep --break' span_id:2610))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2614) (Token id: Id.Lit_Chars val: '\tgit grep --break -e char -e lo_w hello.c hello_world >actual &&\n' span_id: 2615 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2616) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2622) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2625) fd: -1 here_begin: {(EOF)} here_end_span_id: 2637 stdin_parts: [ ('hello.c:int main(int argc, const char **argv)\n') ('hello.c-{\n') ('--\n') ('hello.c:\t/* char ?? */\n') ('hello.c-}\n') ('\n') ('hello_world:Hello_world\n') ('hello_world-HeLLo_world\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep --break with context' span_id:2642))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2646) (Token id: Id.Lit_Chars val: '\tgit grep --break -A1 -e char -e lo_w hello.c hello_world >actual &&\n' span_id: 2647 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2648) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2654) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2657) fd: -1 here_begin: {(EOF)} here_end_span_id: 2666 stdin_parts: [ ('hello.c\n') ('int main(int argc, const char **argv)\n') ('\t/* char ?? */\n') ('hello_world\n') ('Hello_world\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep --heading' span_id:2671))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2675) (Token id: Id.Lit_Chars val: '\tgit grep --heading -e char -e lo_w hello.c hello_world >actual &&\n' span_id: 2676 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2677) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2683) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2686) fd: -1 here_begin: {(EOF)} here_end_span_id: 2696 stdin_parts: [ ('<BOLD;GREEN>hello.c<RESET>\n') ('4:int main(int argc, const <BLACK;BYELLOW>char<RESET> **argv)\n') ('8:\t/* <BLACK;BYELLOW>char<RESET> ?? */\n') ('\n') ('<BOLD;GREEN>hello_world<RESET>\n') ('3:Hel<BLACK;BYELLOW>lo_w<RESET>orld\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'mimic ack-grep --group' span_id:2701))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2705) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.context\t\tnormal &&\n' span_id: 2706 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.filename\t\t"bold green" &&\n' span_id:2707) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.function\t\tnormal &&\n' span_id: 2708 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.linenumber\tnormal &&\n' span_id:2709) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.match\t\t"black yellow" &&\n' span_id: 2710 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.selected\t\tnormal &&\n' span_id:2711) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.separator\tnormal &&\n' span_id: 2712 ) (Token id:Id.Lit_Chars val:'\n' span_id:2713) (Token id: Id.Lit_Chars val: '\tgit grep --break --heading -n --color \\\n' span_id: 2714 ) (Token id:Id.Lit_Chars val:'\t\t-e char -e lo_w hello.c hello_world |\n' span_id:2715) (Token id:Id.Lit_Chars val:'\ttest_decode_color >actual &&\n' span_id:2716) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2717) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2723) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2726) fd: -1 here_begin: {(EOF)} here_end_span_id: 2733 stdin_parts: [ ('space: line with leading space1\n') ('space: line with leading space2\n') ('space: line with leading space3\n') ] ) ] ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -E "^ "' span_id:2740))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2744) (Token id:Id.Lit_Chars val:'\tgit grep -E "^ " space >actual &&\n' span_id:2745) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2746) ) } ) (C {(test_expect_success)} {(LIBPCRE)} {(SQ (Token id:Id.Lit_Chars val:'grep -P "^ "' span_id:2755))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2759) (Token id:Id.Lit_Chars val:'\tgit grep -P "^ " space >actual &&\n' span_id:2760) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2761) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2767) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2770) fd: -1 here_begin: {(EOF)} here_end_span_id: 2779 stdin_parts: [ ('space-line without leading space1\n') ('space: line <RED>with <RESET>leading space1\n') ('space: line <RED>with <RESET>leading <RED>space2<RESET>\n') ('space: line <RED>with <RESET>leading space3\n') ('space:line without leading <RED>space2<RESET>\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep --color -e A -e B with context' span_id:2784))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2788) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.context\t\tnormal &&\n' span_id: 2789 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.filename\t\tnormal &&\n' span_id:2790) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.function\t\tnormal &&\n' span_id: 2791 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.linenumber\tnormal &&\n' span_id:2792) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.matchContext\tnormal &&\n' span_id: 2793 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.matchSelected\tred &&\n' span_id:2794) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.selected\t\tnormal &&\n' span_id: 2795 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.separator\tnormal &&\n' span_id:2796) (Token id:Id.Lit_Chars val:'\n' span_id:2797) (Token id: Id.Lit_Chars val: '\tgit grep --color=always -C2 -e "with " -e space2 space |\n' span_id: 2798 ) (Token id:Id.Lit_Chars val:'\ttest_decode_color >actual &&\n' span_id:2799) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2800) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2806) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2809) fd: -1 here_begin: {(EOF)} here_end_span_id: 2818 stdin_parts: [ ('space-line without leading space1\n') ('space- line with leading space1\n') ('space: line <RED>with <RESET>leading <RED>space2<RESET>\n') ('space- line with leading space3\n') ('space-line without leading space2\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep --color -e A --and -e B with context' span_id:2823))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2827) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.context\t\tnormal &&\n' span_id: 2828 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.filename\t\tnormal &&\n' span_id:2829) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.function\t\tnormal &&\n' span_id: 2830 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.linenumber\tnormal &&\n' span_id:2831) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.matchContext\tnormal &&\n' span_id: 2832 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.matchSelected\tred &&\n' span_id:2833) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.selected\t\tnormal &&\n' span_id: 2834 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.separator\tnormal &&\n' span_id:2835) (Token id:Id.Lit_Chars val:'\n' span_id:2836) (Token id: Id.Lit_Chars val: '\tgit grep --color=always -C2 -e "with " --and -e space2 space |\n' span_id: 2837 ) (Token id:Id.Lit_Chars val:'\ttest_decode_color >actual &&\n' span_id:2838) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2839) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2845) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2848) fd: -1 here_begin: {(EOF)} here_end_span_id: 2857 stdin_parts: [ ('space-line without leading space1\n') ('space: line <RED>with <RESET>leading space1\n') ('space- line with leading space2\n') ('space: line <RED>with <RESET>leading space3\n') ('space-line without leading space2\n') ] ) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep --color -e A --and --not -e B with context' span_id: 2862 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2866) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.context\t\tnormal &&\n' span_id: 2867 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.filename\t\tnormal &&\n' span_id:2868) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.function\t\tnormal &&\n' span_id: 2869 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.linenumber\tnormal &&\n' span_id:2870) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.matchContext\tnormal &&\n' span_id: 2871 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.matchSelected\tred &&\n' span_id:2872) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.selected\t\tnormal &&\n' span_id: 2873 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.separator\tnormal &&\n' span_id:2874) (Token id:Id.Lit_Chars val:'\n' span_id:2875) (Token id: Id.Lit_Chars val: '\tgit grep --color=always -C2 -e "with " --and --not -e space2 space |\n' span_id: 2876 ) (Token id:Id.Lit_Chars val:'\ttest_decode_color >actual &&\n' span_id:2877) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2878) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2884) fd: -1 arg_word: {(expected)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2887) fd: -1 here_begin: {(EOF)} here_end_span_id: 2904 stdin_parts: [ ('hello.c-\n') ('hello.c=int main(int argc, const char **argv)\n') ('hello.c-{\n') ('hello.c:\tpr<RED>int<RESET>f(') (Id.Right_DoubleQuote '"') ('<RED>Hello<RESET> world.') (Id.Lit_Other '\\') (n) (Id.Right_DoubleQuote '"') (');\n') ('hello.c-\treturn 0;\n') ('hello.c-\t/* char ?? */\n') ('hello.c-}\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep --color -e A --and -e B -p with context' span_id:2909))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2913) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.context\t\tnormal &&\n' span_id: 2914 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.filename\t\tnormal &&\n' span_id:2915) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.function\t\tnormal &&\n' span_id: 2916 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.linenumber\tnormal &&\n' span_id:2917) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.matchContext\tnormal &&\n' span_id: 2918 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.matchSelected\tred &&\n' span_id:2919) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.selected\t\tnormal &&\n' span_id: 2920 ) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.separator\tnormal &&\n' span_id:2921) (Token id:Id.Lit_Chars val:'\n' span_id:2922) (Token id: Id.Lit_Chars val: '\tgit grep --color=always -p -C3 -e int --and -e Hello --no-index hello.c |\n' span_id: 2923 ) (Token id:Id.Lit_Chars val:'\ttest_decode_color >actual &&\n' span_id:2924) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2925) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep can find things only in the work tree' span_id:2932))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2936) (Token id:Id.Lit_Chars val:'\t: >work-tree-only &&\n' span_id:2937) (Token id:Id.Lit_Chars val:'\tgit add work-tree-only &&\n' span_id:2938) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rm -f work-tree-only" &&\n' span_id: 2939 ) (Token id:Id.Lit_Chars val:'\techo "find in work tree" >work-tree-only &&\n' span_id:2940) (Token id: Id.Lit_Chars val: '\tgit grep --quiet "find in work tree" &&\n' span_id: 2941 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet --cached "find in work tree" &&\n' span_id: 2942 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet "find in work tree" HEAD\n' span_id: 2943 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep can find things only in the work tree (i-t-a)' span_id: 2950 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2954) (Token id: Id.Lit_Chars val: '\techo "intend to add this" >intend-to-add &&\n' span_id: 2955 ) (Token id:Id.Lit_Chars val:'\tgit add -N intend-to-add &&\n' span_id:2956) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rm -f intend-to-add" &&\n' span_id: 2957 ) (Token id:Id.Lit_Chars val:'\tgit grep --quiet "intend to add this" &&\n' span_id:2958) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet --cached "intend to add this" &&\n' span_id: 2959 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet "intend to add this" HEAD\n' span_id: 2960 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep does not search work tree with assume unchanged' span_id: 2967 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2971) (Token id: Id.Lit_Chars val: '\techo "intend to add this" >intend-to-add &&\n' span_id: 2972 ) (Token id:Id.Lit_Chars val:'\tgit add -N intend-to-add &&\n' span_id:2973) (Token id: Id.Lit_Chars val: '\tgit update-index --assume-unchanged intend-to-add &&\n' span_id: 2974 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git rm -f intend-to-add" &&\n' span_id:2975) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet "intend to add this" &&\n' span_id: 2976 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet --cached "intend to add this" &&\n' span_id: 2977 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet "intend to add this" HEAD\n' span_id: 2978 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep can find things only in the index' span_id:2985))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2989) (Token id: Id.Lit_Chars val: '\techo "only in the index" >cache-this &&\n' span_id: 2990 ) (Token id:Id.Lit_Chars val:'\tgit add cache-this &&\n' span_id:2991) (Token id:Id.Lit_Chars val:'\trm cache-this &&\n' span_id:2992) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git rm --cached cache-this" &&\n' span_id:2993) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet "only in the index" &&\n' span_id: 2994 ) (Token id:Id.Lit_Chars val:'\tgit grep --quiet --cached "only in the index" &&\n' span_id:2995) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --quiet "only in the index" HEAD\n' span_id: 2996 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'grep does not report i-t-a with -L --cached' span_id:3003))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3007) (Token id: Id.Lit_Chars val: '\techo "intend to add this" >intend-to-add &&\n' span_id: 3008 ) (Token id:Id.Lit_Chars val:'\tgit add -N intend-to-add &&\n' span_id:3009) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rm -f intend-to-add" &&\n' span_id: 3010 ) (Token id: Id.Lit_Chars val: '\tgit ls-files | grep -v "^intend-to-add\\$" >expected &&\n' span_id: 3011 ) (Token id:Id.Lit_Chars val:'\tgit grep -L --cached "nonexistent_string" >actual &&\n' span_id:3012) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3013) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'grep does not report i-t-a and assume unchanged with -L' span_id: 3020 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:3024) (Token id: Id.Lit_Chars val: '\techo "intend to add this" >intend-to-add-assume-unchanged &&\n' span_id: 3025 ) (Token id:Id.Lit_Chars val:'\tgit add -N intend-to-add-assume-unchanged &&\n' span_id:3026) (Token id: Id.Lit_Chars val: '\ttest_when_finished "git rm -f intend-to-add-assume-unchanged" &&\n' span_id: 3027 ) (Token id: Id.Lit_Chars val: '\tgit update-index --assume-unchanged intend-to-add-assume-unchanged &&\n' span_id: 3028 ) (Token id: Id.Lit_Chars val: '\tgit ls-files | grep -v "^intend-to-add-assume-unchanged\\$" >expected &&\n' span_id: 3029 ) (Token id:Id.Lit_Chars val:'\tgit grep -L "nonexistent_string" >actual &&\n' span_id:3030) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:3031) ) } ) (C {(test_done)}) ] )