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