(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:'Test automatic use of a pager.' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-pager.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-terminal.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:32))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:36) (Token id: Id.Lit_Chars val: '\tsane_unset GIT_PAGER GIT_PAGER_IN_USE &&\n' span_id: 37 ) (Token id:Id.Lit_Chars val:'\ttest_unconfig core.pager &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id:Id.Lit_Chars val:'\tPAGER="cat >paginated.out" &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\texport PAGER &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\ttest_commit initial\n' span_id:43) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'some commands use a pager' span_id:52))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:56) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\ttest_terminal git log &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\ttest -e paginated.out\n' span_id:59) ) } ) (C {(test_expect_failure)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'pager runs from subdir' span_id:68))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:72) (Token id: Id.Lit_Chars val: '\techo subdir/paginated.out >expected &&\n' span_id: 73 ) (Token id:Id.Lit_Chars val:'\tmkdir -p subdir &&\n' span_id:74) (Token id: Id.Lit_Chars val: '\trm -f paginated.out subdir/paginated.out &&\n' span_id: 75 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:76) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\t\ttest_terminal git log\n' span_id:78) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\t{\n' span_id:80) (Token id: Id.Lit_Chars val: '\t\tls paginated.out subdir/paginated.out ||\n' span_id: 81 ) (Token id:Id.Lit_Chars val:'\t\t:\n' span_id:82) (Token id:Id.Lit_Chars val:'\t} >actual &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:84) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'LESS and LV envvars are set for pagination' span_id:93))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:97) (Token id:Id.Lit_Chars val:'\t(\n' span_id:98) (Token id:Id.Lit_Chars val:'\t\tsane_unset LESS LV &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\tPAGER="env >pager-env.out; wc" &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\t\texport PAGER &&\n' span_id:101) (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id:Id.Lit_Chars val:'\t\ttest_terminal git log\n' span_id:103) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgrep ^LESS= pager-env.out &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgrep ^LV= pager-env.out\n' span_id:106) ) } ) (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW) (Id.Lit_Comma ',') (TTY)} {(SQ (Token id:Id.Lit_Chars val:'LESS and LV envvars set by git-sh-setup' span_id:118))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:122) (Token id:Id.Lit_Chars val:'\t(\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\tsane_unset LESS LV &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\t\tPAGER="env >pager-env.out; wc" &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\t\texport PAGER &&\n' span_id:126) (Token id: Id.Lit_Chars val: '\t\tPATH="$(git --exec-path):$PATH" &&\n' span_id: 127 ) (Token id:Id.Lit_Chars val:'\t\texport PATH &&\n' span_id:128) (Token id: Id.Lit_Chars val: '\t\ttest_terminal sh -c ". git-sh-setup && git_pager"\n' span_id: 129 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\tgrep ^LESS= pager-env.out &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\tgrep ^LV= pager-env.out\n' span_id:132) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'some commands do not use a pager' span_id:141))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:145) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\ttest_terminal git rev-list HEAD &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\t! test -e paginated.out\n' span_id:148) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no pager when stdout is a pipe' span_id:155))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:159) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\tgit log | cat &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\t! test -e paginated.out\n' span_id:162) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no pager when stdout is a regular file' span_id:169))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:173) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\tgit log >file &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\t! test -e paginated.out\n' span_id:176) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'git --paginate rev-list uses a pager' span_id:185))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:189) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\ttest_terminal git --paginate rev-list HEAD &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\ttest -e paginated.out\n' span_id:192) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'no pager even with --paginate when stdout is a pipe' span_id: 199 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:203) (Token id:Id.Lit_Chars val:'\trm -f file paginated.out &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\tgit --paginate log | cat &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\t! test -e paginated.out\n' span_id:206) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'no pager with --no-pager' span_id:215))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:219) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:220) (Token id:Id.Lit_Chars val:'\ttest_terminal git --no-pager log &&\n' span_id:221) (Token id:Id.Lit_Chars val:'\t! test -e paginated.out\n' span_id:222) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'configuration can disable pager' span_id:231))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:235) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\ttest_unconfig pager.grep &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\ttest_terminal git grep initial &&\n' span_id:238) (Token id:Id.Lit_Chars val:'\ttest -e paginated.out &&\n' span_id:239) (Token id:Id.Lit_Chars val:'\n' span_id:240) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\ttest_config pager.grep false &&\n' span_id:242) (Token id:Id.Lit_Chars val:'\ttest_terminal git grep initial &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\t! test -e paginated.out\n' span_id:244) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'git config uses a pager if configured to' span_id:253))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:257) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\ttest_config pager.config true &&\n' span_id:259) (Token id:Id.Lit_Chars val:'\ttest_terminal git config --list &&\n' span_id:260) (Token id:Id.Lit_Chars val:'\ttest -e paginated.out\n' span_id:261) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'configuration can enable pager (from subdir)' span_id:270))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\tmkdir -p subdir &&\n' span_id:276) (Token id:Id.Lit_Chars val:'\ttest_config pager.bundle true &&\n' span_id:277) (Token id:Id.Lit_Chars val:'\n' span_id:278) (Token id: Id.Lit_Chars val: '\tgit bundle create test.bundle --all &&\n' span_id: 279 ) (Token id:Id.Lit_Chars val:'\trm -f paginated.out subdir/paginated.out &&\n' span_id:280) (Token id:Id.Lit_Chars val:'\t(\n' span_id:281) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:282) (Token id: Id.Lit_Chars val: '\t\ttest_terminal git bundle unbundle ../test.bundle\n' span_id: 283 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:284) (Token id:Id.Lit_Chars val:'\t{\n' span_id:285) (Token id:Id.Lit_Chars val:'\t\ttest -e paginated.out ||\n' span_id:286) (Token id:Id.Lit_Chars val:'\t\ttest -e subdir/paginated.out\n' span_id:287) (Token id:Id.Lit_Chars val:'\t}\n' span_id:288) ) } ) (command.ShFunction name: colorful body: (command.BraceGroup children: [ (command.Simple words: [{(read)} {(firstline)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:309) fd: -1 arg_word: {($ Id.VSub_Number '$1')} ) ] ) (command.Pipeline children: [ (command.Simple words: [ {(expr)} {(DQ ($ Id.VSub_DollarName '$firstline'))} {(Id.Lit_Other ':')} {(DQ ('[a-zA-Z]'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:327) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: T ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tests can detect color' span_id:336))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:340) (Token id:Id.Lit_Chars val:'\trm -f colorful.log colorless.log &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\tgit log --no-color >colorless.log &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\tgit log --color >colorful.log &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\t! colorful colorless.log &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\tcolorful colorful.log\n' span_id:345) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no color when stdout is a regular file' span_id:352))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:356) (Token id:Id.Lit_Chars val:'\trm -f colorless.log &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\ttest_config color.ui auto &&\n' span_id:358) (Token id:Id.Lit_Chars val:'\tgit log >colorless.log &&\n' span_id:359) (Token id:Id.Lit_Chars val:'\t! colorful colorless.log\n' span_id:360) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'color when writing to a pager' span_id:369))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:373) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:374) (Token id:Id.Lit_Chars val:'\ttest_config color.ui auto &&\n' span_id:375) (Token id: Id.Lit_Chars val: '\ttest_terminal env TERM=vt100 git log &&\n' span_id: 376 ) (Token id:Id.Lit_Chars val:'\tcolorful paginated.out\n' span_id:377) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'colors are suppressed by color.pager' span_id:386))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:390) (Token id:Id.Lit_Chars val:'\trm -f paginated.out &&\n' span_id:391) (Token id:Id.Lit_Chars val:'\ttest_config color.ui auto &&\n' span_id:392) (Token id:Id.Lit_Chars val:'\ttest_config color.pager false &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\ttest_terminal env TERM=vt100 git log &&\n' span_id:394) (Token id:Id.Lit_Chars val:'\t! colorful paginated.out\n' span_id:395) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'color when writing to a file intended for a pager' span_id: 402 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:406) (Token id:Id.Lit_Chars val:'\trm -f colorful.log &&\n' span_id:407) (Token id:Id.Lit_Chars val:'\ttest_config color.ui auto &&\n' span_id:408) (Token id:Id.Lit_Chars val:'\t(\n' span_id:409) (Token id:Id.Lit_Chars val:'\t\tTERM=vt100 &&\n' span_id:410) (Token id:Id.Lit_Chars val:'\t\tGIT_PAGER_IN_USE=true &&\n' span_id:411) (Token id:Id.Lit_Chars val:'\t\texport TERM GIT_PAGER_IN_USE &&\n' span_id:412) (Token id:Id.Lit_Chars val:'\t\tgit log >colorful.log\n' span_id:413) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:414) (Token id:Id.Lit_Chars val:'\tcolorful colorful.log\n' span_id:415) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'colors are sent to pager for external commands' span_id:424))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:428) (Token id: Id.Lit_Chars val: '\ttest_config alias.externallog "!git log" &&\n' span_id: 429 ) (Token id:Id.Lit_Chars val:'\ttest_config color.ui auto &&\n' span_id:430) (Token id: Id.Lit_Chars val: '\ttest_terminal env TERM=vt100 git -p externallog &&\n' span_id: 431 ) (Token id:Id.Lit_Chars val:'\tcolorful paginated.out\n' span_id:432) ) } ) (command.ShFunction name: parse_args body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_expectation) op: assign_op.Equal rhs: {(DQ (test_) ($ Id.VSub_Number '$1'))} spids: [497] ) ] ) (C {(shift)}) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=')} {(test_must_fail)}) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:full_command) op: assign_op.Equal rhs: {(DQ ('test_must_fail test_terminal '))} spids: [523] ) ] ) (C {(shift)}) ] spids: [507 520] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:full_command) op: assign_op.Equal rhs: {(DQ ('test_terminal '))} spids: [535] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cmd) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [544] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:full_command) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$full_command') (' ') ($ Id.VSub_Number '$1'))} spids: [548] ) ] ) ] ) ) (command.ShFunction name: test_default_pager body: (command.BraceGroup children: [ (C {(parse_args)} {(DQ ($ Id.VSub_At '$@'))}) (C {($ Id.VSub_DollarName '$test_expectation')} {(SIMPLEPAGER) (Id.Lit_Comma ',') (TTY)} {(DQ ($ Id.VSub_DollarName '$cmd') (' - default pager is used by default'))} { (DQ ('\n') ('\t\tsane_unset PAGER GIT_PAGER &&\n') ('\t\ttest_unconfig core.pager &&\n') ('\t\trm -f default_pager_used &&\n') ('\t\tcat >') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:590) ) ('less <<-') (Id.Lit_Other '\\') ('EOF &&\n') ('\t\t#!/bin/sh\n') ('\t\twc >default_pager_used\n') ('\t\tEOF\n') ('\t\tchmod +x ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:598)) ('less &&\n') ('\t\t(\n') ('\t\t\tPATH=.:') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:602) ) ('PATH &&\n') ('\t\t\texport PATH &&\n') ('\t\t\t') ($ Id.VSub_DollarName '$full_command') ('\n') ('\t\t) &&\n') ('\t\ttest -e default_pager_used\n') ('\t') ) } ) ] ) ) (command.ShFunction name: test_PAGER_overrides body: (command.BraceGroup children: [ (C {(parse_args)} {(DQ ($ Id.VSub_At '$@'))}) (C {($ Id.VSub_DollarName '$test_expectation')} {(TTY)} {(DQ ($ Id.VSub_DollarName '$cmd') (' - PAGER overrides default pager'))} { (DQ ('\n') ('\t\tsane_unset GIT_PAGER &&\n') ('\t\ttest_unconfig core.pager &&\n') ('\t\trm -f PAGER_used &&\n') ("\t\tPAGER='wc >PAGER_used' &&\n") ('\t\texport PAGER &&\n') ('\t\t') ($ Id.VSub_DollarName '$full_command') (' &&\n') ('\t\ttest -e PAGER_used\n') ('\t') ) } ) ] ) ) (command.ShFunction name: test_core_pager_overrides body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:if_local_config) op: assign_op.Equal rhs: (word.Empty) spids: [664] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used_if_wanted) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'overrides PAGER' span_id:669))} spids: [667] ) ] ) (C {(test_core_pager)} {(DQ ($ Id.VSub_At '$@'))}) ] ) ) (command.ShFunction name: test_local_config_ignored body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:if_local_config) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'! ' span_id:691))} spids: [689] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used_if_wanted) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'is not used' span_id:697))} spids: [695] ) ] ) (C {(test_core_pager)} {(DQ ($ Id.VSub_At '$@'))}) ] ) ) (command.ShFunction name: test_core_pager body: (command.BraceGroup children: [ (C {(parse_args)} {(DQ ($ Id.VSub_At '$@'))}) (C {($ Id.VSub_DollarName '$test_expectation')} {(TTY)} { (DQ ($ Id.VSub_DollarName '$cmd') (' - repository-local core.pager setting ') ($ Id.VSub_DollarName '$used_if_wanted') ) } { (DQ ('\n') ('\t\tsane_unset GIT_PAGER &&\n') ('\t\trm -f core.pager_used &&\n') ('\t\tPAGER=wc &&\n') ('\t\texport PAGER &&\n') ("\t\ttest_config core.pager 'wc >core.pager_used' &&\n") ('\t\t') ($ Id.VSub_DollarName '$full_command') (' &&\n') ('\t\t') (${ Id.VSub_Name if_local_config) ('test -e core.pager_used\n') ('\t') ) } ) ] ) ) (command.ShFunction name: test_core_pager_subdir body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:if_local_config) op: assign_op.Equal rhs: (word.Empty) spids: [763] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used_if_wanted) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'overrides PAGER' span_id:768))} spids: [766] ) ] ) (C {(test_pager_subdir_helper)} {(DQ ($ Id.VSub_At '$@'))}) ] ) ) (command.ShFunction name: test_no_local_config_subdir body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:if_local_config) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'! ' span_id:790))} spids: [788] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used_if_wanted) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'is not used' span_id:796))} spids: [794] ) ] ) (C {(test_pager_subdir_helper)} {(DQ ($ Id.VSub_At '$@'))}) ] ) ) (command.ShFunction name: test_pager_subdir_helper body: (command.BraceGroup children: [ (C {(parse_args)} {(DQ ($ Id.VSub_At '$@'))}) (C {($ Id.VSub_DollarName '$test_expectation')} {(TTY)} { (DQ ($ Id.VSub_DollarName '$cmd') (' - core.pager ') ($ Id.VSub_DollarName '$used_if_wanted') (' from subdirectory') ) } { (DQ ('\n') ('\t\tsane_unset GIT_PAGER &&\n') ('\t\trm -f core.pager_used &&\n') ('\t\trm -fr sub &&\n') ('\t\tPAGER=wc &&\n') ('\t\tstampname=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:842) ) ('(pwd)/core.pager_used &&\n') ('\t\texport PAGER stampname &&\n') ("\t\ttest_config core.pager 'wc >") (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:846) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:847)) (stampname) (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:849) ) ("' &&\n") ('\t\tmkdir sub &&\n') ('\t\t(\n') ('\t\t\tcd sub &&\n') ('\t\t\t') ($ Id.VSub_DollarName '$full_command') ('\n') ('\t\t) &&\n') ('\t\t') (${ Id.VSub_Name if_local_config) ('test -e core.pager_used\n') ('\t') ) } ) ] ) ) (command.ShFunction name: test_GIT_PAGER_overrides body: (command.BraceGroup children: [ (C {(parse_args)} {(DQ ($ Id.VSub_At '$@'))}) (C {($ Id.VSub_DollarName '$test_expectation')} {(TTY)} {(DQ ($ Id.VSub_DollarName '$cmd') (' - GIT_PAGER overrides core.pager'))} { (DQ ('\n') ('\t\trm -f GIT_PAGER_used &&\n') ('\t\ttest_config core.pager wc &&\n') ("\t\tGIT_PAGER='wc >GIT_PAGER_used' &&\n") ('\t\texport GIT_PAGER &&\n') ('\t\t') ($ Id.VSub_DollarName '$full_command') (' &&\n') ('\t\ttest -e GIT_PAGER_used\n') ('\t') ) } ) ] ) ) (command.ShFunction name: test_doesnt_paginate body: (command.BraceGroup children: [ (C {(parse_args)} {(DQ ($ Id.VSub_At '$@'))}) (C {($ Id.VSub_DollarName '$test_expectation')} {(TTY)} {(DQ ("no pager for '") ($ Id.VSub_DollarName '$cmd') ("'"))} { (DQ ('\n') ('\t\trm -f GIT_PAGER_used &&\n') ("\t\tGIT_PAGER='wc >GIT_PAGER_used' &&\n") ('\t\texport GIT_PAGER &&\n') ('\t\t') ($ Id.VSub_DollarName '$full_command') (' &&\n') ('\t\t! test -e GIT_PAGER_used\n') ('\t') ) } ) ] ) ) (command.ShFunction name: test_pager_choices body: (command.BraceGroup children: [ (C {(test_default_pager)} {(expect_success)} {(DQ ($ Id.VSub_At '$@'))}) (C {(test_PAGER_overrides)} {(expect_success)} {(DQ ($ Id.VSub_At '$@'))}) (C {(test_core_pager_overrides)} {(expect_success)} {(DQ ($ Id.VSub_At '$@'))}) (C {(test_core_pager_subdir)} {(expect_success)} {(DQ ($ Id.VSub_At '$@'))}) (C {(test_GIT_PAGER_overrides)} {(expect_success)} {(DQ ($ Id.VSub_At '$@'))}) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: some aliases' span_id:1006))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1010) (Token id:Id.Lit_Chars val:'\tgit config alias.aliasedlog log &&\n' span_id:1011) (Token id:Id.Lit_Chars val:'\tgit config alias.true "!true"\n' span_id:1012) ) } ) (C {(test_pager_choices)} {(SQ (Token id:Id.Lit_Chars val:'git log' span_id:1019))}) (C {(test_pager_choices)} {(SQ (Token id:Id.Lit_Chars val:'git -p log' span_id:1025))}) (C {(test_pager_choices)} {(SQ (Token id:Id.Lit_Chars val:'git aliasedlog' span_id:1031))}) (C {(test_default_pager)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p aliasedlog' span_id:1040))} ) (C {(test_PAGER_overrides)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p aliasedlog' span_id:1048))} ) (C {(test_core_pager_overrides)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p aliasedlog' span_id:1056))} ) (C {(test_core_pager_subdir)} {(expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'git -p aliasedlog' span_id:1064))} ) (C {(test_GIT_PAGER_overrides)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p aliasedlog' span_id:1072))} ) (C {(test_default_pager)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p true' span_id:1081))} ) (C {(test_PAGER_overrides)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p true' span_id:1089))} ) (C {(test_core_pager_overrides)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p true' span_id:1097))} ) (C {(test_core_pager_subdir)} {(expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'git -p true' span_id:1105))} ) (C {(test_GIT_PAGER_overrides)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p true' span_id:1113))} ) (C {(test_default_pager)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p request-pull' span_id:1124))} ) (C {(test_PAGER_overrides)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p request-pull' span_id:1134))} ) (C {(test_core_pager_overrides)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p request-pull' span_id:1144))} ) (C {(test_core_pager_subdir)} {(expect_failure)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p request-pull' span_id:1154))} ) (C {(test_GIT_PAGER_overrides)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p request-pull' span_id:1164))} ) (C {(test_default_pager)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p' span_id:1175))} ) (C {(test_PAGER_overrides)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p' span_id:1185))} ) (C {(test_local_config_ignored)} {(expect_failure)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p' span_id:1195))} ) (C {(test_no_local_config_subdir)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p' span_id:1205))} ) (C {(test_GIT_PAGER_overrides)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p' span_id:1215))} ) (C {(test_doesnt_paginate)} {(expect_failure)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p nonsense' span_id:1226))} ) (C {(test_pager_choices)} {(SQ (Token id:Id.Lit_Chars val:'git shortlog' span_id:1233))}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: configure shortlog not to paginate' span_id:1239))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1243) (Token id:Id.Lit_Chars val:'\tgit config pager.shortlog false\n' span_id:1244) ) } ) (C {(test_doesnt_paginate)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git shortlog' span_id:1252))} ) (C {(test_no_local_config_subdir)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git shortlog' span_id:1260))} ) (C {(test_default_pager)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p shortlog' span_id:1268))} ) (C {(test_core_pager_subdir)} {(expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git -p shortlog' span_id:1276))} ) (C {(test_core_pager_subdir)} {(expect_success)} {(test_must_fail)} {(SQ (Token id:Id.Lit_Chars val:'git -p apply </dev/null' span_id:1289))} ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'command-specific pager' span_id:1298))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1302) (Token id:Id.Lit_Chars val:'\tsane_unset PAGER GIT_PAGER &&\n' span_id:1303) (Token id:Id.Lit_Chars val:'\techo "foo:initial" >expect &&\n' span_id:1304) (Token id:Id.Lit_Chars val:'\t>actual &&\n' span_id:1305) (Token id:Id.Lit_Chars val:'\ttest_unconfig core.pager &&\n' span_id:1306) (Token id: Id.Lit_Chars val: '\ttest_config pager.log "sed s/^/foo:/ >actual" &&\n' span_id: 1307 ) (Token id:Id.Lit_Chars val:'\ttest_terminal git log --format=%s -1 &&\n' span_id:1308) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1309) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'command-specific pager overrides core.pager' span_id:1318))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1322) (Token id:Id.Lit_Chars val:'\tsane_unset PAGER GIT_PAGER &&\n' span_id:1323) (Token id:Id.Lit_Chars val:'\techo "foo:initial" >expect &&\n' span_id:1324) (Token id:Id.Lit_Chars val:'\t>actual &&\n' span_id:1325) (Token id:Id.Lit_Chars val:'\ttest_config core.pager "exit 1" &&\n' span_id:1326) (Token id: Id.Lit_Chars val: '\ttest_config pager.log "sed s/^/foo:/ >actual" &&\n' span_id: 1327 ) (Token id:Id.Lit_Chars val:'\ttest_terminal git log --format=%s -1 &&\n' span_id:1328) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1329) ) } ) (C {(test_expect_success)} {(TTY)} { (SQ (Token id: Id.Lit_Chars val: 'command-specific pager overridden by environment' span_id: 1338 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1342) (Token id: Id.Lit_Chars val: '\tGIT_PAGER="sed s/^/foo:/ >actual" && export GIT_PAGER &&\n' span_id: 1343 ) (Token id:Id.Lit_Chars val:'\t>actual &&\n' span_id:1344) (Token id:Id.Lit_Chars val:'\techo "foo:initial" >expect &&\n' span_id:1345) (Token id:Id.Lit_Chars val:'\ttest_config pager.log "exit 1" &&\n' span_id:1346) (Token id: Id.Lit_Chars val: '\ttest_terminal git log --format=%s -1 &&\n' span_id: 1347 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1348) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup external command' span_id:1355))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1359) (Token id:Id.Lit_Chars val:'\tcat >git-external <<-\\EOF &&\n' span_id:1360) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:1361) (Token id:Id.Lit_Chars val:'\tgit "$@"\n' span_id:1362) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1363) (Token id:Id.Lit_Chars val:'\tchmod +x git-external\n' span_id:1364) ) } ) (C {(test_expect_success)} {(TTY)} { (SQ (Token id: Id.Lit_Chars val: 'command-specific pager works for external commands' span_id: 1373 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1377) (Token id:Id.Lit_Chars val:'\tsane_unset PAGER GIT_PAGER &&\n' span_id:1378) (Token id:Id.Lit_Chars val:'\techo "foo:initial" >expect &&\n' span_id:1379) (Token id:Id.Lit_Chars val:'\t>actual &&\n' span_id:1380) (Token id:Id.Lit_Chars val:'\ttest_config pager.external "sed s/^/foo:/ >actual" &&\n' span_id:1381) (Token id: Id.Lit_Chars val: '\ttest_terminal git --exec-path="$(pwd)" external log --format=%s -1 &&\n' span_id: 1382 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1383) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'sub-commands of externals use their own pager' span_id:1392))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1396) (Token id:Id.Lit_Chars val:'\tsane_unset PAGER GIT_PAGER &&\n' span_id:1397) (Token id:Id.Lit_Chars val:'\techo "foo:initial" >expect &&\n' span_id:1398) (Token id:Id.Lit_Chars val:'\t>actual &&\n' span_id:1399) (Token id:Id.Lit_Chars val:'\ttest_config pager.log "sed s/^/foo:/ >actual" &&\n' span_id:1400) (Token id: Id.Lit_Chars val: '\ttest_terminal git --exec-path=. external log --format=%s -1 &&\n' span_id: 1401 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1402) ) } ) (C {(test_expect_success)} {(TTY)} {(SQ (Token id:Id.Lit_Chars val:'external command pagers override sub-commands' span_id:1411))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1415) (Token id:Id.Lit_Chars val:'\tsane_unset PAGER GIT_PAGER &&\n' span_id:1416) (Token id:Id.Lit_Chars val:'\t>expect &&\n' span_id:1417) (Token id:Id.Lit_Chars val:'\t>actual &&\n' span_id:1418) (Token id:Id.Lit_Chars val:'\ttest_config pager.external false &&\n' span_id:1419) (Token id: Id.Lit_Chars val: '\ttest_config pager.log "sed s/^/log:/ >actual" &&\n' span_id: 1420 ) (Token id: Id.Lit_Chars val: '\ttest_terminal git --exec-path=. external log --format=%s -1 &&\n' span_id: 1421 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1422) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'command with underscores does not complain' span_id:1429))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1433) (Token id: Id.Lit_Chars val: '\twrite_script git-under_score <<-\\EOF &&\n' span_id: 1434 ) (Token id:Id.Lit_Chars val:'\techo ok\n' span_id:1435) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1436) (Token id:Id.Lit_Chars val:'\tgit --exec-path=. under_score >actual 2>&1 &&\n' span_id:1437) (Token id:Id.Lit_Chars val:'\techo ok >expect &&\n' span_id:1438) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1439) ) } ) (C {(test_done)}) ] )