##// END OF EJS Templates
pager: add a test of --pager=no functionality...
Augie Fackler -
r30942:65a3b4d6 default
parent child Browse files
Show More
@@ -1,229 +1,234 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 > [extensions]
13 > [extensions]
14 > pager=
14 > pager=
15 > [pager]
15 > [pager]
16 > pager = python $TESTTMP/fakepager.py
16 > pager = python $TESTTMP/fakepager.py
17 > EOF
17 > EOF
18
18
19 $ hg init repo
19 $ hg init repo
20 $ cd repo
20 $ cd repo
21 $ echo a >> a
21 $ echo a >> a
22 $ hg add a
22 $ hg add a
23 $ hg ci -m 'add a'
23 $ hg ci -m 'add a'
24 $ for x in `python $TESTDIR/seq.py 1 10`; do
24 $ for x in `python $TESTDIR/seq.py 1 10`; do
25 > echo a $x >> a
25 > echo a $x >> a
26 > hg ci -m "modify a $x"
26 > hg ci -m "modify a $x"
27 > done
27 > done
28
28
29 By default diff and log are paged, but summary is not:
29 By default diff and log are paged, but summary is not:
30
30
31 $ hg diff -c 2 --pager=yes
31 $ hg diff -c 2 --pager=yes
32 paged! 'diff -r f4be7687d414 -r bce265549556 a\n'
32 paged! 'diff -r f4be7687d414 -r bce265549556 a\n'
33 paged! '--- a/a\tThu Jan 01 00:00:00 1970 +0000\n'
33 paged! '--- a/a\tThu Jan 01 00:00:00 1970 +0000\n'
34 paged! '+++ b/a\tThu Jan 01 00:00:00 1970 +0000\n'
34 paged! '+++ b/a\tThu Jan 01 00:00:00 1970 +0000\n'
35 paged! '@@ -1,2 +1,3 @@\n'
35 paged! '@@ -1,2 +1,3 @@\n'
36 paged! ' a\n'
36 paged! ' a\n'
37 paged! ' a 1\n'
37 paged! ' a 1\n'
38 paged! '+a 2\n'
38 paged! '+a 2\n'
39
39
40 $ hg log --limit 2
40 $ hg log --limit 2
41 paged! 'changeset: 10:46106edeeb38\n'
41 paged! 'changeset: 10:46106edeeb38\n'
42 paged! 'tag: tip\n'
42 paged! 'tag: tip\n'
43 paged! 'user: test\n'
43 paged! 'user: test\n'
44 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
44 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
45 paged! 'summary: modify a 10\n'
45 paged! 'summary: modify a 10\n'
46 paged! '\n'
46 paged! '\n'
47 paged! 'changeset: 9:6dd8ea7dd621\n'
47 paged! 'changeset: 9:6dd8ea7dd621\n'
48 paged! 'user: test\n'
48 paged! 'user: test\n'
49 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
49 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
50 paged! 'summary: modify a 9\n'
50 paged! 'summary: modify a 9\n'
51 paged! '\n'
51 paged! '\n'
52
52
53 $ hg summary
53 $ hg summary
54 parent: 10:46106edeeb38 tip
54 parent: 10:46106edeeb38 tip
55 modify a 10
55 modify a 10
56 branch: default
56 branch: default
57 commit: (clean)
57 commit: (clean)
58 update: (current)
58 update: (current)
59 phases: 11 draft
59 phases: 11 draft
60
60
61 We can enable the pager on summary:
61 We can enable the pager on summary:
62
62
63 $ hg --config pager.attend-summary=yes summary
63 $ hg --config pager.attend-summary=yes summary
64 paged! 'parent: 10:46106edeeb38 tip\n'
64 paged! 'parent: 10:46106edeeb38 tip\n'
65 paged! ' modify a 10\n'
65 paged! ' modify a 10\n'
66 paged! 'branch: default\n'
66 paged! 'branch: default\n'
67 paged! 'commit: (clean)\n'
67 paged! 'commit: (clean)\n'
68 paged! 'update: (current)\n'
68 paged! 'update: (current)\n'
69 paged! 'phases: 11 draft\n'
69 paged! 'phases: 11 draft\n'
70
70
71 If we completely change the attend list that's respected:
71 If we completely change the attend list that's respected:
72
72
73 $ hg --config pager.attend-diff=no diff -c 2
73 $ hg --config pager.attend-diff=no diff -c 2
74 diff -r f4be7687d414 -r bce265549556 a
74 diff -r f4be7687d414 -r bce265549556 a
75 --- a/a Thu Jan 01 00:00:00 1970 +0000
75 --- a/a Thu Jan 01 00:00:00 1970 +0000
76 +++ b/a Thu Jan 01 00:00:00 1970 +0000
76 +++ b/a Thu Jan 01 00:00:00 1970 +0000
77 @@ -1,2 +1,3 @@
77 @@ -1,2 +1,3 @@
78 a
78 a
79 a 1
79 a 1
80 +a 2
80 +a 2
81
81
82 $ hg --config pager.attend=summary diff -c 2
82 $ hg --config pager.attend=summary diff -c 2
83 diff -r f4be7687d414 -r bce265549556 a
83 diff -r f4be7687d414 -r bce265549556 a
84 --- a/a Thu Jan 01 00:00:00 1970 +0000
84 --- a/a Thu Jan 01 00:00:00 1970 +0000
85 +++ b/a Thu Jan 01 00:00:00 1970 +0000
85 +++ b/a Thu Jan 01 00:00:00 1970 +0000
86 @@ -1,2 +1,3 @@
86 @@ -1,2 +1,3 @@
87 a
87 a
88 a 1
88 a 1
89 +a 2
89 +a 2
90
90
91 If 'log' is in attend, then 'history' should also be paged:
91 If 'log' is in attend, then 'history' should also be paged:
92 $ hg history --limit 2 --config pager.attend=log
92 $ hg history --limit 2 --config pager.attend=log
93 paged! 'changeset: 10:46106edeeb38\n'
93 paged! 'changeset: 10:46106edeeb38\n'
94 paged! 'tag: tip\n'
94 paged! 'tag: tip\n'
95 paged! 'user: test\n'
95 paged! 'user: test\n'
96 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
96 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
97 paged! 'summary: modify a 10\n'
97 paged! 'summary: modify a 10\n'
98 paged! '\n'
98 paged! '\n'
99 paged! 'changeset: 9:6dd8ea7dd621\n'
99 paged! 'changeset: 9:6dd8ea7dd621\n'
100 paged! 'user: test\n'
100 paged! 'user: test\n'
101 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
101 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
102 paged! 'summary: modify a 9\n'
102 paged! 'summary: modify a 9\n'
103 paged! '\n'
103 paged! '\n'
104
104
105 Possible bug: history is explicitly ignored in pager config, but
105 Possible bug: history is explicitly ignored in pager config, but
106 because log is in the attend list it still gets pager treatment.
106 because log is in the attend list it still gets pager treatment.
107
107
108 $ hg history --limit 2 --config pager.attend=log \
108 $ hg history --limit 2 --config pager.attend=log \
109 > --config pager.ignore=history
109 > --config pager.ignore=history
110 paged! 'changeset: 10:46106edeeb38\n'
110 paged! 'changeset: 10:46106edeeb38\n'
111 paged! 'tag: tip\n'
111 paged! 'tag: tip\n'
112 paged! 'user: test\n'
112 paged! 'user: test\n'
113 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
113 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
114 paged! 'summary: modify a 10\n'
114 paged! 'summary: modify a 10\n'
115 paged! '\n'
115 paged! '\n'
116 paged! 'changeset: 9:6dd8ea7dd621\n'
116 paged! 'changeset: 9:6dd8ea7dd621\n'
117 paged! 'user: test\n'
117 paged! 'user: test\n'
118 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
118 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
119 paged! 'summary: modify a 9\n'
119 paged! 'summary: modify a 9\n'
120 paged! '\n'
120 paged! '\n'
121
121
122 Possible bug: history is explicitly marked as attend-history=no, but
122 Possible bug: history is explicitly marked as attend-history=no, but
123 it doesn't fail to get paged because log is still in the attend list.
123 it doesn't fail to get paged because log is still in the attend list.
124
124
125 $ hg history --limit 2 --config pager.attend-history=no
125 $ hg history --limit 2 --config pager.attend-history=no
126 paged! 'changeset: 10:46106edeeb38\n'
126 paged! 'changeset: 10:46106edeeb38\n'
127 paged! 'tag: tip\n'
127 paged! 'tag: tip\n'
128 paged! 'user: test\n'
128 paged! 'user: test\n'
129 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
129 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
130 paged! 'summary: modify a 10\n'
130 paged! 'summary: modify a 10\n'
131 paged! '\n'
131 paged! '\n'
132 paged! 'changeset: 9:6dd8ea7dd621\n'
132 paged! 'changeset: 9:6dd8ea7dd621\n'
133 paged! 'user: test\n'
133 paged! 'user: test\n'
134 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
134 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
135 paged! 'summary: modify a 9\n'
135 paged! 'summary: modify a 9\n'
136 paged! '\n'
136 paged! '\n'
137
137
138 Possible bug: disabling pager for log but enabling it for history
138 Possible bug: disabling pager for log but enabling it for history
139 doesn't result in history being paged.
139 doesn't result in history being paged.
140
140
141 $ hg history --limit 2 --config pager.attend-log=no \
141 $ hg history --limit 2 --config pager.attend-log=no \
142 > --config pager.attend-history=yes
142 > --config pager.attend-history=yes
143 changeset: 10:46106edeeb38
143 changeset: 10:46106edeeb38
144 tag: tip
144 tag: tip
145 user: test
145 user: test
146 date: Thu Jan 01 00:00:00 1970 +0000
146 date: Thu Jan 01 00:00:00 1970 +0000
147 summary: modify a 10
147 summary: modify a 10
148
148
149 changeset: 9:6dd8ea7dd621
149 changeset: 9:6dd8ea7dd621
150 user: test
150 user: test
151 date: Thu Jan 01 00:00:00 1970 +0000
151 date: Thu Jan 01 00:00:00 1970 +0000
152 summary: modify a 9
152 summary: modify a 9
153
153
154
154
155 Pager should not start if stdout is not a tty.
155 Pager should not start if stdout is not a tty.
156
156
157 $ hg log -l1 -q --config ui.formatted=False
157 $ hg log -l1 -q --config ui.formatted=False
158 10:46106edeeb38
158 10:46106edeeb38
159
159
160 Pager with color enabled allows colors to come through by default,
160 Pager with color enabled allows colors to come through by default,
161 even though stdout is no longer a tty.
161 even though stdout is no longer a tty.
162 $ cat >> $HGRCPATH <<EOF
162 $ cat >> $HGRCPATH <<EOF
163 > [extensions]
163 > [extensions]
164 > color=
164 > color=
165 > [color]
165 > [color]
166 > mode = ansi
166 > mode = ansi
167 > EOF
167 > EOF
168 $ hg log --limit 3
168 $ hg log --limit 3
169 paged! '\x1b[0;33mchangeset: 10:46106edeeb38\x1b[0m\n'
169 paged! '\x1b[0;33mchangeset: 10:46106edeeb38\x1b[0m\n'
170 paged! 'tag: tip\n'
170 paged! 'tag: tip\n'
171 paged! 'user: test\n'
171 paged! 'user: test\n'
172 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
172 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
173 paged! 'summary: modify a 10\n'
173 paged! 'summary: modify a 10\n'
174 paged! '\n'
174 paged! '\n'
175 paged! '\x1b[0;33mchangeset: 9:6dd8ea7dd621\x1b[0m\n'
175 paged! '\x1b[0;33mchangeset: 9:6dd8ea7dd621\x1b[0m\n'
176 paged! 'user: test\n'
176 paged! 'user: test\n'
177 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
177 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
178 paged! 'summary: modify a 9\n'
178 paged! 'summary: modify a 9\n'
179 paged! '\n'
179 paged! '\n'
180 paged! '\x1b[0;33mchangeset: 8:cff05a6312fe\x1b[0m\n'
180 paged! '\x1b[0;33mchangeset: 8:cff05a6312fe\x1b[0m\n'
181 paged! 'user: test\n'
181 paged! 'user: test\n'
182 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
182 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
183 paged! 'summary: modify a 8\n'
183 paged! 'summary: modify a 8\n'
184 paged! '\n'
184 paged! '\n'
185
185
186 Pager works with shell aliases.
186 Pager works with shell aliases.
187
187
188 $ cat >> $HGRCPATH <<EOF
188 $ cat >> $HGRCPATH <<EOF
189 > [alias]
189 > [alias]
190 > echoa = !echo a
190 > echoa = !echo a
191 > EOF
191 > EOF
192
192
193 $ hg echoa
193 $ hg echoa
194 a
194 a
195 $ hg --config pager.attend-echoa=yes echoa
195 $ hg --config pager.attend-echoa=yes echoa
196 paged! 'a\n'
196 paged! 'a\n'
197
197
198 Pager works with hg aliases including environment variables.
198 Pager works with hg aliases including environment variables.
199
199
200 $ cat >> $HGRCPATH <<'EOF'
200 $ cat >> $HGRCPATH <<'EOF'
201 > [alias]
201 > [alias]
202 > printa = log -T "$A\n" -r 0
202 > printa = log -T "$A\n" -r 0
203 > EOF
203 > EOF
204
204
205 $ A=1 hg --config pager.attend-printa=yes printa
205 $ A=1 hg --config pager.attend-printa=yes printa
206 paged! '1\n'
206 paged! '1\n'
207 $ A=2 hg --config pager.attend-printa=yes printa
207 $ A=2 hg --config pager.attend-printa=yes printa
208 paged! '2\n'
208 paged! '2\n'
209
209
210 Something that's explicitly attended is still not paginated if the
211 pager is globally set to off using a flag:
212 $ A=2 hg --config pager.attend-printa=yes printa --pager=no
213 2
214
210 Pager should not override the exit code of other commands
215 Pager should not override the exit code of other commands
211
216
212 $ cat >> $TESTTMP/fortytwo.py <<'EOF'
217 $ cat >> $TESTTMP/fortytwo.py <<'EOF'
213 > from mercurial import cmdutil, commands
218 > from mercurial import cmdutil, commands
214 > cmdtable = {}
219 > cmdtable = {}
215 > command = cmdutil.command(cmdtable)
220 > command = cmdutil.command(cmdtable)
216 > @command('fortytwo', [], 'fortytwo', norepo=True)
221 > @command('fortytwo', [], 'fortytwo', norepo=True)
217 > def fortytwo(ui, *opts):
222 > def fortytwo(ui, *opts):
218 > ui.write('42\n')
223 > ui.write('42\n')
219 > return 42
224 > return 42
220 > EOF
225 > EOF
221
226
222 $ cat >> $HGRCPATH <<'EOF'
227 $ cat >> $HGRCPATH <<'EOF'
223 > [extensions]
228 > [extensions]
224 > fortytwo = $TESTTMP/fortytwo.py
229 > fortytwo = $TESTTMP/fortytwo.py
225 > EOF
230 > EOF
226
231
227 $ hg fortytwo --pager=on
232 $ hg fortytwo --pager=on
228 paged! '42\n'
233 paged! '42\n'
229 [42]
234 [42]
General Comments 0
You need to be logged in to leave comments. Login now