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