(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)})
  ]
)