tests: Add tests for automatic use of pager
[git/gitweb.git] / t / t7006-pager.sh
blob4f52ea5732de3d25a87eb556b8ecb7786c469f8c
1 #!/bin/sh
3 test_description='Test automatic use of a pager.'
5 . ./test-lib.sh
7 rm -f stdout_is_tty
8 test_expect_success 'is stdout a terminal?' '
9 if test -t 1
10 then
11 : > stdout_is_tty
15 if test -e stdout_is_tty
16 then
17 test_set_prereq TTY
18 else
19 say stdout is not a terminal, so skipping some tests.
22 unset GIT_PAGER GIT_PAGER_IN_USE
23 git config --unset core.pager
24 PAGER='cat > paginated.out'
25 export PAGER
27 test_expect_success 'setup' '
28 test_commit initial
31 rm -f paginated.out
32 test_expect_success TTY 'some commands use a pager' '
33 git log &&
34 test -e paginated.out
37 rm -f paginated.out
38 test_expect_success TTY 'some commands do not use a pager' '
39 git rev-list HEAD &&
40 ! test -e paginated.out
43 rm -f paginated.out
44 test_expect_success 'no pager when stdout is a pipe' '
45 git log | cat &&
46 ! test -e paginated.out
49 rm -f paginated.out
50 test_expect_success 'no pager when stdout is a regular file' '
51 git log > file &&
52 ! test -e paginated.out
55 rm -f paginated.out
56 test_expect_success TTY 'git --paginate rev-list uses a pager' '
57 git --paginate rev-list HEAD &&
58 test -e paginated.out
61 rm -f file paginated.out
62 test_expect_success 'no pager even with --paginate when stdout is a pipe' '
63 git --paginate log | cat &&
64 ! test -e paginated.out
67 rm -f paginated.out
68 test_expect_success TTY 'no pager with --no-pager' '
69 git --no-pager log &&
70 ! test -e paginated.out
73 # A colored commit log will begin with an appropriate ANSI escape
74 # for the first color; the text "commit" comes later.
75 colorful() {
76 read firstline < $1
77 ! expr "$firstline" : "^[a-zA-Z]" >/dev/null
80 rm -f colorful.log colorless.log
81 test_expect_success 'tests can detect color' '
82 git log --no-color > colorless.log &&
83 git log --color > colorful.log &&
84 ! colorful colorless.log &&
85 colorful colorful.log
88 rm -f colorless.log
89 git config color.ui auto
90 test_expect_success 'no color when stdout is a regular file' '
91 git log > colorless.log &&
92 ! colorful colorless.log
95 rm -f paginated.out
96 git config color.ui auto
97 test_expect_success TTY 'color when writing to a pager' '
98 TERM=vt100 git log &&
99 colorful paginated.out
102 rm -f colorful.log
103 git config color.ui auto
104 test_expect_success 'color when writing to a file intended for a pager' '
105 TERM=vt100 GIT_PAGER_IN_USE=true git log > colorful.log &&
106 colorful colorful.log
109 unset PAGER GIT_PAGER
110 git config --unset core.pager
111 test_expect_success 'determine default pager' '
112 less=$(git var GIT_PAGER) &&
113 test -n "$less"
116 if expr "$less" : '^[a-z]*$' > /dev/null && test_have_prereq TTY
117 then
118 test_set_prereq SIMPLEPAGER
121 unset PAGER GIT_PAGER
122 git config --unset core.pager
123 rm -f default_pager_used
124 test_expect_success SIMPLEPAGER 'default pager is used by default' '
125 cat > $less <<-EOF &&
126 #!$SHELL_PATH
127 : > default_pager_used
129 chmod +x $less &&
130 PATH=.:$PATH git log &&
131 test -e default_pager_used
134 unset GIT_PAGER
135 git config --unset core.pager
136 rm -f PAGER_used
137 test_expect_success TTY 'PAGER overrides default pager' '
138 PAGER=": > PAGER_used" &&
139 export PAGER &&
140 git log &&
141 test -e PAGER_used
144 unset GIT_PAGER
145 rm -f core.pager_used
146 test_expect_success TTY 'core.pager overrides PAGER' '
147 PAGER=: &&
148 export PAGER &&
149 git config core.pager ": > core.pager_used" &&
150 git log &&
151 test -e core.pager_used
154 rm -f GIT_PAGER_used
155 test_expect_success TTY 'GIT_PAGER overrides core.pager' '
156 git config core.pager : &&
157 GIT_PAGER=": > GIT_PAGER_used" &&
158 export GIT_PAGER &&
159 git log &&
160 test -e GIT_PAGER_used
163 test_done