##// END OF EJS Templates
tests: demonstrate that pager.attend-<abbreviated> doesn't work...
Gregory Szorc -
r32074:769c8317 stable
parent child Browse files
Show More
@@ -1,294 +1,302 b''
1 1 $ cat >> fakepager.py <<EOF
2 2 > import sys
3 3 > for line in sys.stdin:
4 4 > sys.stdout.write('paged! %r\n' % line)
5 5 > EOF
6 6
7 7 Enable ui.formatted because pager won't fire without it, and set up
8 8 pager and tell it to use our fake pager that lets us see when the
9 9 pager was running.
10 10 $ cat >> $HGRCPATH <<EOF
11 11 > [ui]
12 12 > formatted = yes
13 13 > color = no
14 14 > [pager]
15 15 > pager = python $TESTTMP/fakepager.py
16 16 > EOF
17 17
18 18 $ hg init repo
19 19 $ cd repo
20 20 $ echo a >> a
21 21 $ hg add a
22 22 $ hg ci -m 'add a'
23 23 $ for x in `python $TESTDIR/seq.py 1 10`; do
24 24 > echo a $x >> a
25 25 > hg ci -m "modify a $x"
26 26 > done
27 27
28 28 By default diff and log are paged, but id is not:
29 29
30 30 $ hg diff -c 2 --pager=yes
31 31 paged! 'diff -r f4be7687d414 -r bce265549556 a\n'
32 32 paged! '--- a/a\tThu Jan 01 00:00:00 1970 +0000\n'
33 33 paged! '+++ b/a\tThu Jan 01 00:00:00 1970 +0000\n'
34 34 paged! '@@ -1,2 +1,3 @@\n'
35 35 paged! ' a\n'
36 36 paged! ' a 1\n'
37 37 paged! '+a 2\n'
38 38
39 39 $ hg log --limit 2
40 40 paged! 'changeset: 10:46106edeeb38\n'
41 41 paged! 'tag: tip\n'
42 42 paged! 'user: test\n'
43 43 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
44 44 paged! 'summary: modify a 10\n'
45 45 paged! '\n'
46 46 paged! 'changeset: 9:6dd8ea7dd621\n'
47 47 paged! 'user: test\n'
48 48 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
49 49 paged! 'summary: modify a 9\n'
50 50 paged! '\n'
51 51
52 52 $ hg id
53 53 46106edeeb38 tip
54 54
55 55 We can enable the pager on id:
56 56
57 57 BROKEN: should be paged
58 58 $ hg --config pager.attend-id=yes id
59 59 46106edeeb38 tip
60 60
61 61 Setting attend-$COMMAND to a false value works, even with pager in
62 62 core:
63 63 $ hg --config pager.attend-diff=no diff -c 2
64 64 diff -r f4be7687d414 -r bce265549556 a
65 65 --- a/a Thu Jan 01 00:00:00 1970 +0000
66 66 +++ b/a Thu Jan 01 00:00:00 1970 +0000
67 67 @@ -1,2 +1,3 @@
68 68 a
69 69 a 1
70 70 +a 2
71 71
72 72 Command aliases should have same behavior as main command
73 73
74 74 $ hg history --limit 2
75 75 paged! 'changeset: 10:46106edeeb38\n'
76 76 paged! 'tag: tip\n'
77 77 paged! 'user: test\n'
78 78 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
79 79 paged! 'summary: modify a 10\n'
80 80 paged! '\n'
81 81 paged! 'changeset: 9:6dd8ea7dd621\n'
82 82 paged! 'user: test\n'
83 83 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
84 84 paged! 'summary: modify a 9\n'
85 85 paged! '\n'
86 86
87 87 Abbreviated command alias should also be paged
88 88
89 89 $ hg hist -l 1
90 90 paged! 'changeset: 10:46106edeeb38\n'
91 91 paged! 'tag: tip\n'
92 92 paged! 'user: test\n'
93 93 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
94 94 paged! 'summary: modify a 10\n'
95 95 paged! '\n'
96 96
97 Attend for an abbreviated command does not work
98
99 $ hg --config pager.attend-ident=true ident
100 46106edeeb38 tip
101
102 $ hg --config extensions.pager= --config pager.attend-ident=true ident
103 46106edeeb38 tip
104
97 105 Pager should not start if stdout is not a tty.
98 106
99 107 $ hg log -l1 -q --config ui.formatted=False
100 108 10:46106edeeb38
101 109
102 110 Pager should be disabled if pager.pager is empty (otherwise the output would
103 111 be silently lost.)
104 112
105 113 $ hg log -l1 -q --config pager.pager=
106 114 10:46106edeeb38
107 115
108 116 Pager with color enabled allows colors to come through by default,
109 117 even though stdout is no longer a tty.
110 118 $ cat >> $HGRCPATH <<EOF
111 119 > [ui]
112 120 > color = yes
113 121 > [color]
114 122 > mode = ansi
115 123 > EOF
116 124 $ hg log --limit 3
117 125 paged! '\x1b[0;33mchangeset: 10:46106edeeb38\x1b[0m\n'
118 126 paged! 'tag: tip\n'
119 127 paged! 'user: test\n'
120 128 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
121 129 paged! 'summary: modify a 10\n'
122 130 paged! '\n'
123 131 paged! '\x1b[0;33mchangeset: 9:6dd8ea7dd621\x1b[0m\n'
124 132 paged! 'user: test\n'
125 133 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
126 134 paged! 'summary: modify a 9\n'
127 135 paged! '\n'
128 136 paged! '\x1b[0;33mchangeset: 8:cff05a6312fe\x1b[0m\n'
129 137 paged! 'user: test\n'
130 138 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
131 139 paged! 'summary: modify a 8\n'
132 140 paged! '\n'
133 141
134 142 An invalid pager command name is reported sensibly if we don't have to
135 143 use shell=True in the subprocess call:
136 144 $ hg log --limit 3 --config pager.pager=this-command-better-never-exist
137 145 missing pager command 'this-command-better-never-exist', skipping pager
138 146 \x1b[0;33mchangeset: 10:46106edeeb38\x1b[0m (esc)
139 147 tag: tip
140 148 user: test
141 149 date: Thu Jan 01 00:00:00 1970 +0000
142 150 summary: modify a 10
143 151
144 152 \x1b[0;33mchangeset: 9:6dd8ea7dd621\x1b[0m (esc)
145 153 user: test
146 154 date: Thu Jan 01 00:00:00 1970 +0000
147 155 summary: modify a 9
148 156
149 157 \x1b[0;33mchangeset: 8:cff05a6312fe\x1b[0m (esc)
150 158 user: test
151 159 date: Thu Jan 01 00:00:00 1970 +0000
152 160 summary: modify a 8
153 161
154 162
155 163 A complicated pager command gets worse behavior. Bonus points if you can
156 164 improve this.
157 165 $ hg log --limit 3 \
158 166 > --config pager.pager='this-command-better-never-exist --seriously' \
159 167 > 2>/dev/null || true
160 168
161 169 Pager works with shell aliases.
162 170
163 171 $ cat >> $HGRCPATH <<EOF
164 172 > [alias]
165 173 > echoa = !echo a
166 174 > EOF
167 175
168 176 $ hg echoa
169 177 a
170 178 BROKEN: should be paged
171 179 $ hg --config pager.attend-echoa=yes echoa
172 180 a
173 181
174 182 Pager works with hg aliases including environment variables.
175 183
176 184 $ cat >> $HGRCPATH <<'EOF'
177 185 > [alias]
178 186 > printa = log -T "$A\n" -r 0
179 187 > EOF
180 188
181 189 $ A=1 hg --config pager.attend-printa=yes printa
182 190 paged! '1\n'
183 191 $ A=2 hg --config pager.attend-printa=yes printa
184 192 paged! '2\n'
185 193
186 194 Something that's explicitly attended is still not paginated if the
187 195 pager is globally set to off using a flag:
188 196 $ A=2 hg --config pager.attend-printa=yes printa --pager=no
189 197 2
190 198
191 199 Pager should not override the exit code of other commands
192 200
193 201 $ cat >> $TESTTMP/fortytwo.py <<'EOF'
194 202 > from mercurial import cmdutil, commands
195 203 > cmdtable = {}
196 204 > command = cmdutil.command(cmdtable)
197 205 > @command('fortytwo', [], 'fortytwo', norepo=True)
198 206 > def fortytwo(ui, *opts):
199 207 > ui.write('42\n')
200 208 > return 42
201 209 > EOF
202 210
203 211 $ cat >> $HGRCPATH <<'EOF'
204 212 > [extensions]
205 213 > fortytwo = $TESTTMP/fortytwo.py
206 214 > EOF
207 215
208 216 $ hg fortytwo --pager=on
209 217 paged! '42\n'
210 218 [42]
211 219
212 220 A command that asks for paging using ui.pager() directly works:
213 221 $ hg blame a
214 222 paged! ' 0: a\n'
215 223 paged! ' 1: a 1\n'
216 224 paged! ' 2: a 2\n'
217 225 paged! ' 3: a 3\n'
218 226 paged! ' 4: a 4\n'
219 227 paged! ' 5: a 5\n'
220 228 paged! ' 6: a 6\n'
221 229 paged! ' 7: a 7\n'
222 230 paged! ' 8: a 8\n'
223 231 paged! ' 9: a 9\n'
224 232 paged! '10: a 10\n'
225 233 but not with HGPLAIN
226 234 $ HGPLAIN=1 hg blame a
227 235 0: a
228 236 1: a 1
229 237 2: a 2
230 238 3: a 3
231 239 4: a 4
232 240 5: a 5
233 241 6: a 6
234 242 7: a 7
235 243 8: a 8
236 244 9: a 9
237 245 10: a 10
238 246 explicit flags work too:
239 247 $ hg blame --pager=no a
240 248 0: a
241 249 1: a 1
242 250 2: a 2
243 251 3: a 3
244 252 4: a 4
245 253 5: a 5
246 254 6: a 6
247 255 7: a 7
248 256 8: a 8
249 257 9: a 9
250 258 10: a 10
251 259
252 260 Put annotate in the ignore list for pager:
253 261 $ cat >> $HGRCPATH <<EOF
254 262 > [pager]
255 263 > ignore = annotate
256 264 > EOF
257 265 $ hg blame a
258 266 0: a
259 267 1: a 1
260 268 2: a 2
261 269 3: a 3
262 270 4: a 4
263 271 5: a 5
264 272 6: a 6
265 273 7: a 7
266 274 8: a 8
267 275 9: a 9
268 276 10: a 10
269 277
270 278 Environment variables like LESS and LV are set automatically:
271 279 $ cat > $TESTTMP/printlesslv.py <<EOF
272 280 > import os, sys
273 281 > sys.stdin.read()
274 282 > for name in ['LESS', 'LV']:
275 283 > sys.stdout.write(('%s=%s\n') % (name, os.environ.get(name, '-')))
276 284 > sys.stdout.flush()
277 285 > EOF
278 286
279 287 $ cat >> $HGRCPATH <<EOF
280 288 > [alias]
281 289 > noop = log -r 0 -T ''
282 290 > [ui]
283 291 > formatted=1
284 292 > [pager]
285 293 > pager = $PYTHON $TESTTMP/printlesslv.py
286 294 > EOF
287 295 $ unset LESS
288 296 $ unset LV
289 297 $ hg noop --pager=on
290 298 LESS=FRX
291 299 LV=-c
292 300 $ LESS=EFGH hg noop --pager=on
293 301 LESS=EFGH
294 302 LV=-c
General Comments 0
You need to be logged in to leave comments. Login now