(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 --open-files-in-pager\n' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-pager.sh)}) (C {(unset)} {(PAGER)} {(GIT_PAGER)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:31))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) (Token id:Id.Lit_Chars val:'\ttest_commit initial grep.h "\n' span_id:36) (Token id:Id.Lit_Chars val:'enum grep_pat_token {\n' span_id:37) (Token id:Id.Lit_Chars val:'\tGREP_PATTERN,\n' span_id:38) (Token id:Id.Lit_Chars val:'\tGREP_PATTERN_HEAD,\n' span_id:39) (Token id:Id.Lit_Chars val:'\tGREP_PATTERN_BODY,\n' span_id:40) (Token id:Id.Lit_Chars val:'\tGREP_AND,\n' span_id:41) (Token id:Id.Lit_Chars val:'\tGREP_OPEN_PAREN,\n' span_id:42) (Token id:Id.Lit_Chars val:'\tGREP_CLOSE_PAREN,\n' span_id:43) (Token id:Id.Lit_Chars val:'\tGREP_NOT,\n' span_id:44) (Token id:Id.Lit_Chars val:'\tGREP_OR,\n' span_id:45) (Token id:Id.Lit_Chars val:'};" &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\n' span_id:47) (Token id:Id.Lit_Chars val:'\ttest_commit add-user revision.c "\n' span_id:48) (Token id:Id.Lit_Chars val:'\t}\n' span_id:49) (Token id:Id.Lit_Chars val:'\tif (seen_dashdash)\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\tread_pathspec_from_stdin(revs, &sb, prune);\n' span_id:51) (Token id:Id.Lit_Chars val:'\tstrbuf_release(&sb);\n' span_id:52) (Token id:Id.Lit_Chars val:'}\n' span_id:53) (Token id:Id.Lit_Chars val:'\n' span_id:54) (Token id: Id.Lit_Chars val: 'static void add_grep(struct rev_info *revs, const char *ptn, enum grep_pat_token what)\n' span_id: 55 ) (Token id:Id.Lit_Chars val:'{\n' span_id:56) (Token id: Id.Lit_Chars val: '\tappend_grep_pattern(&revs->grep_filter, ptn, \\"command line\\", 0, what);\n' span_id: 57 ) (Token id:Id.Lit_Chars val:'" &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:60) (Token id: Id.Lit_Chars val: '\ttest_commit subdir subdir/grep.c "enum grep_pat_token" &&\n' span_id: 61 ) (Token id:Id.Lit_Chars val:'\n' span_id:62) (Token id: Id.Lit_Chars val: '\ttest_commit uninteresting unrelated "hello, world" &&\n' span_id: 63 ) (Token id:Id.Lit_Chars val:'\n' span_id:64) (Token id:Id.Lit_Chars val:'\techo GREP_PATTERN >untracked\n' span_id:65) ) } ) (C {(test_expect_success)} {(SIMPLEPAGER)} {(SQ (Token id:Id.Lit_Chars val:'git grep -O' span_id:74))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id:Id.Lit_Chars val:'\tcat >$less <<-\\EOF &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:80) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" "$@" >pager-args\n' span_id:81) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:82) (Token id:Id.Lit_Chars val:'\tchmod +x $less &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\tcat >expect.less <<-\\EOF &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\t+/*GREP_PATTERN\n' span_id:85) (Token id:Id.Lit_Chars val:'\tgrep.h\n' span_id:86) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:87) (Token id:Id.Lit_Chars val:'\techo grep.h >expect.notless &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id: Id.Lit_Chars val: '\tPATH=.:$PATH git grep -O GREP_PATTERN >out &&\n' span_id: 91 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:92) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect.less pager-args ||\n' span_id:93) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect.notless pager-args\n' span_id:94) (Token id:Id.Lit_Chars val:'\t} &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\ttest_cmp empty out\n' span_id:96) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git grep -O --cached' span_id:103))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:107) (Token id: Id.Lit_Chars val: '\ttest_must_fail git grep --cached -O GREP_PATTERN >out 2>msg &&\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep open-files-in-pager msg\n' span_id:109) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git grep -O --no-index' span_id:116))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) (Token id:Id.Lit_Chars val:'\trm -f expect.less pager-args out &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\tgrep.h\n' span_id:123) (Token id:Id.Lit_Chars val:'\tuntracked\n' span_id:124) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:125) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id:Id.Lit_Chars val:'\t(\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\tGIT_PAGER=' span_id:129) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:131)) (SQ (Token id:Id.Lit_Chars val:'printf "%s\\n" >pager-args' span_id:133)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:135)) (SQ (Token id:Id.Lit_Chars val:' &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\texport GIT_PAGER &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\tgit grep --no-index -O GREP_PATTERN >out\n' span_id:139) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\ttest_cmp expect pager-args &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\ttest_cmp empty out\n' span_id:142) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: fake "less"' span_id:149))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:153) (Token id:Id.Lit_Chars val:'\tcat >less <<-\\EOF &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:155) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" "$@" >actual\n' span_id:156) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:157) (Token id:Id.Lit_Chars val:'\tchmod +x less\n' span_id:158) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git grep -O jumps to line in less' span_id:165))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:169) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\t+/*GREP_PATTERN\n' span_id:171) (Token id:Id.Lit_Chars val:'\tgrep.h\n' span_id:172) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:173) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\n' span_id:175) (Token id: Id.Lit_Chars val: '\tGIT_PAGER=./less git grep -O GREP_PATTERN >out &&\n' span_id: 176 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\ttest_cmp empty out &&\n' span_id:178) (Token id:Id.Lit_Chars val:'\n' span_id:179) (Token id: Id.Lit_Chars val: '\tgit grep -O./less GREP_PATTERN >out2 &&\n' span_id: 180 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\ttest_cmp empty out2\n' span_id:182) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified file' span_id:189))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:193) (Token id:Id.Lit_Chars val:'\trm -f actual &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\t+/*enum grep_pat_token\n' span_id:196) (Token id:Id.Lit_Chars val:'\tgrep.h\n' span_id:197) (Token id:Id.Lit_Chars val:'\trevision.c\n' span_id:198) (Token id:Id.Lit_Chars val:'\tsubdir/grep.c\n' span_id:199) (Token id:Id.Lit_Chars val:'\tunrelated\n' span_id:200) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:201) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\n' span_id:203) (Token id: Id.Lit_Chars val: '\techo "enum grep_pat_token" >unrelated &&\n' span_id: 204 ) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git checkout HEAD unrelated" &&\n' span_id:205) (Token id: Id.Lit_Chars val: '\tGIT_PAGER=./less git grep -F -O "enum grep_pat_token" >out &&\n' span_id: 206 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\ttest_cmp empty out\n' span_id:208) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'copes with color settings' span_id:215))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:219) (Token id:Id.Lit_Chars val:'\trm -f actual &&\n' span_id:220) (Token id:Id.Lit_Chars val:'\techo grep.h >expect &&\n' span_id:221) (Token id:Id.Lit_Chars val:'\ttest_config color.grep always &&\n' span_id:222) (Token id:Id.Lit_Chars val:'\ttest_config color.grep.filename yellow &&\n' span_id:223) (Token id: Id.Lit_Chars val: '\ttest_config color.grep.separator green &&\n' span_id: 224 ) (Token id:Id.Lit_Chars val:'\tgit grep -O' span_id:225) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:227)) (SQ (Token id:Id.Lit_Chars val:'printf "%s\\n" >actual' span_id:229)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:231)) (SQ (Token id:Id.Lit_Chars val:' GREP_AND &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:234) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'run from subdir' span_id:241))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:245) (Token id:Id.Lit_Chars val:'\trm -f actual &&\n' span_id:246) (Token id:Id.Lit_Chars val:'\techo grep.c >expect &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:248) (Token id:Id.Lit_Chars val:'\n' span_id:249) (Token id:Id.Lit_Chars val:'\t(\n' span_id:250) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:251) (Token id:Id.Lit_Chars val:'\t\texport GIT_PAGER &&\n' span_id:252) (Token id:Id.Lit_Chars val:'\t\tGIT_PAGER=' span_id:253) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:255)) (SQ (Token id:Id.Lit_Chars val:'printf "%s\\n" >../args' span_id:257)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:259)) (SQ (Token id:Id.Lit_Chars val:' &&\n' span_id:261) (Token id: Id.Lit_Chars val: '\t\tgit grep -O "enum grep_pat_token" >../out &&\n' span_id: 262 ) (Token id: Id.Lit_Chars val: '\t\tgit grep -O"pwd >../dir; :" "enum grep_pat_token" >../out2\n' span_id: 263 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:264) (Token id:Id.Lit_Chars val:'\tcase $(cat dir) in\n' span_id:265) (Token id:Id.Lit_Chars val:'\t*subdir)\n' span_id:266) (Token id:Id.Lit_Chars val:'\t\t: good\n' span_id:267) (Token id:Id.Lit_Chars val:'\t\t;;\n' span_id:268) (Token id:Id.Lit_Chars val:'\t*)\n' span_id:269) (Token id:Id.Lit_Chars val:'\t\tfalse\n' span_id:270) (Token id:Id.Lit_Chars val:'\t\t;;\n' span_id:271) (Token id:Id.Lit_Chars val:'\tesac &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\ttest_cmp expect args &&\n' span_id:273) (Token id:Id.Lit_Chars val:'\ttest_cmp empty out &&\n' span_id:274) (Token id:Id.Lit_Chars val:'\ttest_cmp empty out2\n' span_id:275) ) } ) (C {(test_done)}) ] )