(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git grep --open-files-in-pager\n'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ VSub_Name '$TEST_DIRECTORY')) (/lib-pager.sh)})
    (C {(unset)} {(PAGER)} {(GIT_PAGER)})
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\ttest_commit initial grep.h "\n'> <'enum grep_pat_token {\n'> 
          <'\tGREP_PATTERN,\n'> <'\tGREP_PATTERN_HEAD,\n'> <'\tGREP_PATTERN_BODY,\n'> <'\tGREP_AND,\n'> <'\tGREP_OPEN_PAREN,\n'> 
          <'\tGREP_CLOSE_PAREN,\n'> <'\tGREP_NOT,\n'> <'\tGREP_OR,\n'> <'};" &&\n'> <'\n'> <'\ttest_commit add-user revision.c "\n'> <'\t}\n'> 
          <'\tif (seen_dashdash)\n'> <'\t\tread_pathspec_from_stdin(revs, &sb, prune);\n'> <'\tstrbuf_release(&sb);\n'> <'}\n'> <'\n'> 
          <
'static void add_grep(struct rev_info *revs, const char *ptn, enum grep_pat_token what)\n'
          > <'{\n'> <'\tappend_grep_pattern(&revs->grep_filter, ptn, \\"command line\\", 0, what);\n'> <'" &&\n'> 
          <'\n'> <'\tmkdir subdir &&\n'> <'\ttest_commit subdir subdir/grep.c "enum grep_pat_token" &&\n'> <'\n'> 
          <'\ttest_commit uninteresting unrelated "hello, world" &&\n'> <'\n'> <'\techo GREP_PATTERN >untracked\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SIMPLEPAGER)} {(SQ <'git grep -O'>)} 
      {
        (SQ <'\n'> <'\tcat >$less <<-\\EOF &&\n'> <'\t#!/bin/sh\n'> 
          <'\tprintf "%s\\n" "$@" >pager-args\n'> <'\tEOF\n'> <'\tchmod +x $less &&\n'> <'\tcat >expect.less <<-\\EOF &&\n'> <'\t+/*GREP_PATTERN\n'> 
          <'\tgrep.h\n'> <'\tEOF\n'> <'\techo grep.h >expect.notless &&\n'> <'\t>empty &&\n'> <'\n'> 
          <'\tPATH=.:$PATH git grep -O GREP_PATTERN >out &&\n'> <'\t{\n'> <'\t\ttest_cmp expect.less pager-args ||\n'> <'\t\ttest_cmp expect.notless pager-args\n'> 
          <'\t} &&\n'> <'\ttest_cmp empty out\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'git grep -O --cached'>)} 
      {
        (SQ <'\n'> <'\ttest_must_fail git grep --cached -O GREP_PATTERN >out 2>msg &&\n'> 
          <'\ttest_i18ngrep open-files-in-pager msg\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'git grep -O --no-index'>)} 
      {
        (SQ <'\n'> <'\trm -f expect.less pager-args out &&\n'> <'\tcat >expect <<-\\EOF &&\n'> 
          <'\tgrep.h\n'> <'\tuntracked\n'> <'\tEOF\n'> <'\t>empty &&\n'> <'\n'> <'\t(\n'> <'\t\tGIT_PAGER='>
        ) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <'printf "%s\\n" >pager-args'>) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) 
        (SQ <' &&\n'> <'\t\texport GIT_PAGER &&\n'> <'\t\tgit grep --no-index -O GREP_PATTERN >out\n'> 
          <'\t) &&\n'> <'\ttest_cmp expect pager-args &&\n'> <'\ttest_cmp empty out\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'setup: fake "less"'>)} 
      {
        (SQ <'\n'> <'\tcat >less <<-\\EOF &&\n'> <'\t#!/bin/sh\n'> <'\tprintf "%s\\n" "$@" >actual\n'> 
          <'\tEOF\n'> <'\tchmod +x less\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'git grep -O jumps to line in less'>)} 
      {
        (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\t+/*GREP_PATTERN\n'> <'\tgrep.h\n'> <'\tEOF\n'> 
          <'\t>empty &&\n'> <'\n'> <'\tGIT_PAGER=./less git grep -O GREP_PATTERN >out &&\n'> <'\ttest_cmp expect actual &&\n'> 
          <'\ttest_cmp empty out &&\n'> <'\n'> <'\tgit grep -O./less GREP_PATTERN >out2 &&\n'> <'\ttest_cmp expect actual &&\n'> 
          <'\ttest_cmp empty out2\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'modified file'>)} 
      {
        (SQ <'\n'> <'\trm -f actual &&\n'> <'\tcat >expect <<-\\EOF &&\n'> 
          <'\t+/*enum grep_pat_token\n'> <'\tgrep.h\n'> <'\trevision.c\n'> <'\tsubdir/grep.c\n'> <'\tunrelated\n'> <'\tEOF\n'> <'\t>empty &&\n'> 
          <'\n'> <'\techo "enum grep_pat_token" >unrelated &&\n'> 
          <'\ttest_when_finished "git checkout HEAD unrelated" &&\n'> <'\tGIT_PAGER=./less git grep -F -O "enum grep_pat_token" >out &&\n'> 
          <'\ttest_cmp expect actual &&\n'> <'\ttest_cmp empty out\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'copes with color settings'>)} 
      {
        (SQ <'\n'> <'\trm -f actual &&\n'> <'\techo grep.h >expect &&\n'> 
          <'\ttest_config color.grep always &&\n'> <'\ttest_config color.grep.filename yellow &&\n'> <'\ttest_config color.grep.separator green &&\n'> 
          <'\tgit grep -O'>
        ) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <'printf "%s\\n" >actual'>) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <' GREP_AND &&\n'> <'\ttest_cmp expect actual\n'>)
      }
    )
    (C {(test_expect_success)} {(SQ <'run from subdir'>)} 
      {
        (SQ <'\n'> <'\trm -f actual &&\n'> <'\techo grep.c >expect &&\n'> <'\t>empty &&\n'> <'\n'> 
          <'\t(\n'> <'\t\tcd subdir &&\n'> <'\t\texport GIT_PAGER &&\n'> <'\t\tGIT_PAGER='>
        ) (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) (SQ <'printf "%s\\n" >../args'>) 
        (EscapedLiteralPart token:<Lit_EscapedChar "\\'">) 
        (SQ <' &&\n'> <'\t\tgit grep -O "enum grep_pat_token" >../out &&\n'> 
          <'\t\tgit grep -O"pwd >../dir; :" "enum grep_pat_token" >../out2\n'> <'\t) &&\n'> <'\tcase $(cat dir) in\n'> <'\t*subdir)\n'> <'\t\t: good\n'> <'\t\t;;\n'> <'\t*)\n'> 
          <'\t\tfalse\n'> <'\t\t;;\n'> <'\tesac &&\n'> <'\ttest_cmp expect args &&\n'> <'\ttest_cmp empty out &&\n'> 
          <'\ttest_cmp empty out2\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)