@@ -4,17 +4,24 @@ test_description='Test automatic use of a pager.'
4
4
5
5
. ./test-lib.sh
6
6
7
- rm -f stdout_is_tty
7
+ cleanup_fail () {
8
+ echo >&2 cleanup failed
9
+ (exit 1)
10
+ }
11
+
8
12
test_expect_success ' set up terminal for tests' '
13
+ rm -f stdout_is_tty ||
14
+ cleanup_fail &&
15
+
9
16
if test -t 1
10
17
then
11
- : > stdout_is_tty
18
+ > stdout_is_tty
12
19
elif
13
20
test_have_prereq PERL &&
14
21
"$PERL_PATH" "$TEST_DIRECTORY"/t7006/test-terminal.perl \
15
22
sh -c "test -t 1"
16
23
then
17
- : > test_terminal_works
24
+ > test_terminal_works
18
25
fi
19
26
'
20
27
@@ -32,142 +39,188 @@ else
32
39
say no usable terminal, so skipping some tests
33
40
fi
34
41
35
- unset GIT_PAGER GIT_PAGER_IN_USE
36
- git config --unset core.pager
37
- PAGER=' cat > paginated.out'
38
- export PAGER
39
-
40
42
test_expect_success ' setup' '
43
+ unset GIT_PAGER GIT_PAGER_IN_USE &&
44
+ test_might_fail git config --unset core.pager &&
45
+
46
+ PAGER="cat >paginated.out" &&
47
+ export PAGER &&
48
+
41
49
test_commit initial
42
50
'
43
51
44
- rm -f paginated.out
45
52
test_expect_success TTY ' some commands use a pager' '
53
+ rm -f paginated.out ||
54
+ cleanup_fail &&
55
+
46
56
test_terminal git log &&
47
57
test -e paginated.out
48
58
'
49
59
50
- rm -f paginated.out
51
60
test_expect_success TTY ' some commands do not use a pager' '
61
+ rm -f paginated.out ||
62
+ cleanup_fail &&
63
+
52
64
test_terminal git rev-list HEAD &&
53
65
! test -e paginated.out
54
66
'
55
67
56
- rm -f paginated.out
57
68
test_expect_success ' no pager when stdout is a pipe' '
69
+ rm -f paginated.out ||
70
+ cleanup_fail &&
71
+
58
72
git log | cat &&
59
73
! test -e paginated.out
60
74
'
61
75
62
- rm -f paginated.out
63
76
test_expect_success ' no pager when stdout is a regular file' '
64
- git log > file &&
77
+ rm -f paginated.out ||
78
+ cleanup_fail &&
79
+
80
+ git log >file &&
65
81
! test -e paginated.out
66
82
'
67
83
68
- rm -f paginated.out
69
84
test_expect_success TTY ' git --paginate rev-list uses a pager' '
85
+ rm -f paginated.out ||
86
+ cleanup_fail &&
87
+
70
88
test_terminal git --paginate rev-list HEAD &&
71
89
test -e paginated.out
72
90
'
73
91
74
- rm -f file paginated.out
75
92
test_expect_success ' no pager even with --paginate when stdout is a pipe' '
93
+ rm -f file paginated.out ||
94
+ cleanup_fail &&
95
+
76
96
git --paginate log | cat &&
77
97
! test -e paginated.out
78
98
'
79
99
80
- rm -f paginated.out
81
100
test_expect_success TTY ' no pager with --no-pager' '
101
+ rm -f paginated.out ||
102
+ cleanup_fail &&
103
+
82
104
test_terminal git --no-pager log &&
83
105
! test -e paginated.out
84
106
'
85
107
86
108
# A colored commit log will begin with an appropriate ANSI escape
87
109
# for the first color; the text "commit" comes later.
88
110
colorful () {
89
- read firstline < $1
111
+ read firstline < $1
90
112
! expr " $firstline " : " ^[a-zA-Z]" > /dev/null
91
113
}
92
114
93
- rm -f colorful.log colorless.log
94
115
test_expect_success ' tests can detect color' '
95
- git log --no-color > colorless.log &&
96
- git log --color > colorful.log &&
116
+ rm -f colorful.log colorless.log ||
117
+ cleanup_fail &&
118
+
119
+ git log --no-color >colorless.log &&
120
+ git log --color >colorful.log &&
97
121
! colorful colorless.log &&
98
122
colorful colorful.log
99
123
'
100
124
101
- rm -f colorless.log
102
- git config color.ui auto
103
125
test_expect_success ' no color when stdout is a regular file' '
104
- git log > colorless.log &&
126
+ rm -f colorless.log &&
127
+ git config color.ui auto ||
128
+ cleanup_fail &&
129
+
130
+ git log >colorless.log &&
105
131
! colorful colorless.log
106
132
'
107
133
108
- rm -f paginated.out
109
- git config color.ui auto
110
134
test_expect_success TTY ' color when writing to a pager' '
111
- TERM=vt100 test_terminal git log &&
135
+ rm -f paginated.out &&
136
+ git config color.ui auto ||
137
+ cleanup_fail &&
138
+
139
+ (
140
+ TERM=vt100 &&
141
+ export TERM &&
142
+ test_terminal git log
143
+ ) &&
112
144
colorful paginated.out
113
145
'
114
146
115
- rm -f colorful.log
116
- git config color.ui auto
117
147
test_expect_success ' color when writing to a file intended for a pager' '
118
- TERM=vt100 GIT_PAGER_IN_USE=true git log > colorful.log &&
148
+ rm -f colorful.log &&
149
+ git config color.ui auto ||
150
+ cleanup_fail &&
151
+
152
+ (
153
+ TERM=vt100 &&
154
+ GIT_PAGER_IN_USE=true &&
155
+ export TERM GIT_PAGER_IN_USE &&
156
+ git log >colorful.log
157
+ ) &&
119
158
colorful colorful.log
120
159
'
121
160
122
- unset PAGER GIT_PAGER
123
- git config --unset core.pager
124
161
test_expect_success ' determine default pager' '
162
+ unset PAGER GIT_PAGER &&
163
+ test_might_fail git config --unset core.pager ||
164
+ cleanup_fail &&
165
+
125
166
less=$(git var GIT_PAGER) &&
126
167
test -n "$less"
127
168
'
128
169
129
- if expr " $less " : ' ^[a-z]*$' > /dev/null && test_have_prereq TTY
170
+ if expr " $less " : ' ^[a-z][a-z] *$' > /dev/null && test_have_prereq TTY
130
171
then
131
172
test_set_prereq SIMPLEPAGER
132
173
fi
133
174
134
- unset PAGER GIT_PAGER
135
- git config --unset core.pager
136
- rm -f default_pager_used
137
175
test_expect_success SIMPLEPAGER ' default pager is used by default' '
138
- cat > $less <<-EOF &&
139
- #!$SHELL_PATH
140
- wc > default_pager_used
176
+ unset PAGER GIT_PAGER &&
177
+ test_might_fail git config --unset core.pager &&
178
+ rm -f default_pager_used ||
179
+ cleanup_fail &&
180
+
181
+ cat >$less <<-\EOF &&
182
+ #!/bin/sh
183
+ wc >default_pager_used
141
184
EOF
142
185
chmod +x $less &&
143
- PATH=.:$PATH test_terminal git log &&
186
+ (
187
+ PATH=.:$PATH &&
188
+ export PATH &&
189
+ test_terminal git log
190
+ ) &&
144
191
test -e default_pager_used
145
192
'
146
193
147
- unset GIT_PAGER
148
- git config --unset core.pager
149
- rm -f PAGER_used
150
194
test_expect_success TTY ' PAGER overrides default pager' '
151
- PAGER="wc > PAGER_used" &&
195
+ unset GIT_PAGER &&
196
+ test_might_fail git config --unset core.pager &&
197
+ rm -f PAGER_used ||
198
+ cleanup_fail &&
199
+
200
+ PAGER="wc >PAGER_used" &&
152
201
export PAGER &&
153
202
test_terminal git log &&
154
203
test -e PAGER_used
155
204
'
156
205
157
- unset GIT_PAGER
158
- rm -f core.pager_used
159
206
test_expect_success TTY ' core.pager overrides PAGER' '
207
+ unset GIT_PAGER &&
208
+ rm -f core.pager_used ||
209
+ cleanup_fail &&
210
+
160
211
PAGER=wc &&
161
212
export PAGER &&
162
- git config core.pager "wc > core.pager_used" &&
213
+ git config core.pager "wc >core.pager_used" &&
163
214
test_terminal git log &&
164
215
test -e core.pager_used
165
216
'
166
217
167
- rm -f GIT_PAGER_used
168
218
test_expect_success TTY ' GIT_PAGER overrides core.pager' '
219
+ rm -f GIT_PAGER_used ||
220
+ cleanup_fail &&
221
+
169
222
git config core.pager wc &&
170
- GIT_PAGER="wc > GIT_PAGER_used" &&
223
+ GIT_PAGER="wc >GIT_PAGER_used" &&
171
224
export GIT_PAGER &&
172
225
test_terminal git log &&
173
226
test -e GIT_PAGER_used
0 commit comments