author | Augie Fackler <augie@google.com> |
Mon, 06 Feb 2017 23:57:32 -0500 | |
changeset 30964 | b7e073ae44c4 |
parent 30962 | 65a3b4d67a65 |
child 31016 | cc3c9b6f1e09 |
permissions | -rw-r--r-- |
28319 | 1 |
$ cat >> fakepager.py <<EOF |
2 |
> import sys |
|
3 |
> for line in sys.stdin: |
|
4 |
> sys.stdout.write('paged! %r\n' % line) |
|
5 |
> EOF |
|
6 |
||
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 |
|
9 |
pager was running. |
|
10 |
$ cat >> $HGRCPATH <<EOF |
|
11 |
> [ui] |
|
12 |
> formatted = yes |
|
13 |
> [extensions] |
|
14 |
> pager= |
|
15 |
> [pager] |
|
16 |
> pager = python $TESTTMP/fakepager.py |
|
17 |
> EOF |
|
18 |
||
19 |
$ hg init repo |
|
20 |
$ cd repo |
|
21 |
$ echo a >> a |
|
22 |
$ hg add a |
|
23 |
$ hg ci -m 'add a' |
|
24 |
$ for x in `python $TESTDIR/seq.py 1 10`; do |
|
25 |
> echo a $x >> a |
|
26 |
> hg ci -m "modify a $x" |
|
27 |
> done |
|
28 |
||
30964
b7e073ae44c4
tests: switch "this command isn't paged" example to id
Augie Fackler <augie@google.com>
parents:
30962
diff
changeset
|
29 |
By default diff and log are paged, but id is not: |
28319 | 30 |
|
31 |
$ hg diff -c 2 --pager=yes |
|
32 |
paged! 'diff -r f4be7687d414 -r bce265549556 a\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' |
|
35 |
paged! '@@ -1,2 +1,3 @@\n' |
|
36 |
paged! ' a\n' |
|
37 |
paged! ' a 1\n' |
|
38 |
paged! '+a 2\n' |
|
39 |
||
40 |
$ hg log --limit 2 |
|
41 |
paged! 'changeset: 10:46106edeeb38\n' |
|
42 |
paged! 'tag: tip\n' |
|
43 |
paged! 'user: test\n' |
|
44 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
45 |
paged! 'summary: modify a 10\n' |
|
46 |
paged! '\n' |
|
47 |
paged! 'changeset: 9:6dd8ea7dd621\n' |
|
48 |
paged! 'user: test\n' |
|
49 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
50 |
paged! 'summary: modify a 9\n' |
|
51 |
paged! '\n' |
|
52 |
||
30964
b7e073ae44c4
tests: switch "this command isn't paged" example to id
Augie Fackler <augie@google.com>
parents:
30962
diff
changeset
|
53 |
$ hg id |
b7e073ae44c4
tests: switch "this command isn't paged" example to id
Augie Fackler <augie@google.com>
parents:
30962
diff
changeset
|
54 |
46106edeeb38 tip |
28319 | 55 |
|
30964
b7e073ae44c4
tests: switch "this command isn't paged" example to id
Augie Fackler <augie@google.com>
parents:
30962
diff
changeset
|
56 |
We can enable the pager on id: |
28319 | 57 |
|
30964
b7e073ae44c4
tests: switch "this command isn't paged" example to id
Augie Fackler <augie@google.com>
parents:
30962
diff
changeset
|
58 |
$ hg --config pager.attend-id=yes id |
b7e073ae44c4
tests: switch "this command isn't paged" example to id
Augie Fackler <augie@google.com>
parents:
30962
diff
changeset
|
59 |
paged! '46106edeeb38 tip\n' |
28319 | 60 |
|
61 |
If we completely change the attend list that's respected: |
|
62 |
||
63 |
$ hg --config pager.attend-diff=no diff -c 2 |
|
64 |
diff -r f4be7687d414 -r bce265549556 a |
|
65 |
--- a/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 @@ |
|
68 |
a |
|
69 |
a 1 |
|
70 |
+a 2 |
|
71 |
||
72 |
$ hg --config pager.attend=summary diff -c 2 |
|
73 |
diff -r f4be7687d414 -r bce265549556 a |
|
74 |
--- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
75 |
+++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
76 |
@@ -1,2 +1,3 @@ |
|
77 |
a |
|
78 |
a 1 |
|
79 |
+a 2 |
|
80 |
||
81 |
If 'log' is in attend, then 'history' should also be paged: |
|
82 |
$ hg history --limit 2 --config pager.attend=log |
|
83 |
paged! 'changeset: 10:46106edeeb38\n' |
|
84 |
paged! 'tag: tip\n' |
|
85 |
paged! 'user: test\n' |
|
86 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
87 |
paged! 'summary: modify a 10\n' |
|
88 |
paged! '\n' |
|
89 |
paged! 'changeset: 9:6dd8ea7dd621\n' |
|
90 |
paged! 'user: test\n' |
|
91 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
92 |
paged! 'summary: modify a 9\n' |
|
93 |
paged! '\n' |
|
94 |
||
95 |
Possible bug: history is explicitly ignored in pager config, but |
|
96 |
because log is in the attend list it still gets pager treatment. |
|
97 |
||
98 |
$ hg history --limit 2 --config pager.attend=log \ |
|
99 |
> --config pager.ignore=history |
|
100 |
paged! 'changeset: 10:46106edeeb38\n' |
|
101 |
paged! 'tag: tip\n' |
|
102 |
paged! 'user: test\n' |
|
103 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
104 |
paged! 'summary: modify a 10\n' |
|
105 |
paged! '\n' |
|
106 |
paged! 'changeset: 9:6dd8ea7dd621\n' |
|
107 |
paged! 'user: test\n' |
|
108 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
109 |
paged! 'summary: modify a 9\n' |
|
110 |
paged! '\n' |
|
111 |
||
112 |
Possible bug: history is explicitly marked as attend-history=no, but |
|
113 |
it doesn't fail to get paged because log is still in the attend list. |
|
114 |
||
115 |
$ hg history --limit 2 --config pager.attend-history=no |
|
116 |
paged! 'changeset: 10:46106edeeb38\n' |
|
117 |
paged! 'tag: tip\n' |
|
118 |
paged! 'user: test\n' |
|
119 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
120 |
paged! 'summary: modify a 10\n' |
|
121 |
paged! '\n' |
|
122 |
paged! 'changeset: 9:6dd8ea7dd621\n' |
|
123 |
paged! 'user: test\n' |
|
124 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
|
125 |
paged! 'summary: modify a 9\n' |
|
126 |
paged! '\n' |
|
127 |
||
128 |
Possible bug: disabling pager for log but enabling it for history |
|
129 |
doesn't result in history being paged. |
|
130 |
||
131 |
$ hg history --limit 2 --config pager.attend-log=no \ |
|
132 |
> --config pager.attend-history=yes |
|
133 |
changeset: 10:46106edeeb38 |
|
134 |
tag: tip |
|
135 |
user: test |
|
136 |
date: Thu Jan 01 00:00:00 1970 +0000 |
|
137 |
summary: modify a 10 |
|
138 |
||
139 |
changeset: 9:6dd8ea7dd621 |
|
140 |
user: test |
|
141 |
date: Thu Jan 01 00:00:00 1970 +0000 |
|
142 |
summary: modify a 9 |
|
143 |
||
28531
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
144 |
|
30847
e12553cfd0a4
pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents:
29344
diff
changeset
|
145 |
Pager should not start if stdout is not a tty. |
e12553cfd0a4
pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents:
29344
diff
changeset
|
146 |
|
e12553cfd0a4
pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents:
29344
diff
changeset
|
147 |
$ hg log -l1 -q --config ui.formatted=False |
e12553cfd0a4
pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents:
29344
diff
changeset
|
148 |
10:46106edeeb38 |
e12553cfd0a4
pager: wrap _runcommand() no matter if stdout is redirected
Yuya Nishihara <yuya@tcha.org>
parents:
29344
diff
changeset
|
149 |
|
28531
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
150 |
Pager with color enabled allows colors to come through by default, |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
151 |
even though stdout is no longer a tty. |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
152 |
$ cat >> $HGRCPATH <<EOF |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
153 |
> [extensions] |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
154 |
> color= |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
155 |
> [color] |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
156 |
> mode = ansi |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
157 |
> EOF |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
158 |
$ hg log --limit 3 |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
159 |
paged! '\x1b[0;33mchangeset: 10:46106edeeb38\x1b[0m\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
160 |
paged! 'tag: tip\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
161 |
paged! 'user: test\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
162 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
163 |
paged! 'summary: modify a 10\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
164 |
paged! '\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
165 |
paged! '\x1b[0;33mchangeset: 9:6dd8ea7dd621\x1b[0m\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
166 |
paged! 'user: test\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
167 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
168 |
paged! 'summary: modify a 9\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
169 |
paged! '\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
170 |
paged! '\x1b[0;33mchangeset: 8:cff05a6312fe\x1b[0m\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
171 |
paged! 'user: test\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
172 |
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
173 |
paged! 'summary: modify a 8\n' |
fe79a5821e5a
test-pager: add a test for pager with color enabled
Augie Fackler <augie@google.com>
parents:
28319
diff
changeset
|
174 |
paged! '\n' |
29132
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
175 |
|
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
176 |
Pager works with shell aliases. |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
177 |
|
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
178 |
$ cat >> $HGRCPATH <<EOF |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
179 |
> [alias] |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
180 |
> echoa = !echo a |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
181 |
> EOF |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
182 |
|
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
183 |
$ hg echoa |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
184 |
a |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
185 |
$ hg --config pager.attend-echoa=yes echoa |
12769703d4ba
dispatch: always load extensions before running shell aliases (issue5230)
Jun Wu <quark@fb.com>
parents:
28531
diff
changeset
|
186 |
paged! 'a\n' |
29343
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
187 |
|
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
188 |
Pager works with hg aliases including environment variables. |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
189 |
|
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
190 |
$ cat >> $HGRCPATH <<'EOF' |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
191 |
> [alias] |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
192 |
> printa = log -T "$A\n" -r 0 |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
193 |
> EOF |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
194 |
|
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
195 |
$ A=1 hg --config pager.attend-printa=yes printa |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
196 |
paged! '1\n' |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
197 |
$ A=2 hg --config pager.attend-printa=yes printa |
e095b9e753f7
tests: move chg pager test to test-pager.t
Jun Wu <quark@fb.com>
parents:
29132
diff
changeset
|
198 |
paged! '2\n' |
29344 | 199 |
|
30962
65a3b4d67a65
pager: add a test of --pager=no functionality
Augie Fackler <augie@google.com>
parents:
30847
diff
changeset
|
200 |
Something that's explicitly attended is still not paginated if the |
65a3b4d67a65
pager: add a test of --pager=no functionality
Augie Fackler <augie@google.com>
parents:
30847
diff
changeset
|
201 |
pager is globally set to off using a flag: |
65a3b4d67a65
pager: add a test of --pager=no functionality
Augie Fackler <augie@google.com>
parents:
30847
diff
changeset
|
202 |
$ A=2 hg --config pager.attend-printa=yes printa --pager=no |
65a3b4d67a65
pager: add a test of --pager=no functionality
Augie Fackler <augie@google.com>
parents:
30847
diff
changeset
|
203 |
2 |
65a3b4d67a65
pager: add a test of --pager=no functionality
Augie Fackler <augie@google.com>
parents:
30847
diff
changeset
|
204 |
|
29344 | 205 |
Pager should not override the exit code of other commands |
206 |
||
207 |
$ cat >> $TESTTMP/fortytwo.py <<'EOF' |
|
208 |
> from mercurial import cmdutil, commands |
|
209 |
> cmdtable = {} |
|
210 |
> command = cmdutil.command(cmdtable) |
|
211 |
> @command('fortytwo', [], 'fortytwo', norepo=True) |
|
212 |
> def fortytwo(ui, *opts): |
|
213 |
> ui.write('42\n') |
|
214 |
> return 42 |
|
215 |
> EOF |
|
216 |
||
217 |
$ cat >> $HGRCPATH <<'EOF' |
|
218 |
> [extensions] |
|
219 |
> fortytwo = $TESTTMP/fortytwo.py |
|
220 |
> EOF |
|
221 |
||
222 |
$ hg fortytwo --pager=on |
|
223 |
paged! '42\n' |
|
224 |
[42] |