##// END OF EJS Templates
tests: move chg pager test to test-pager.t...
Jun Wu -
r29343:e095b9e7 default
parent child Browse files
Show More
@@ -1,106 +1,86 b''
1 1 #require chg
2 2
3 3 $ cp $HGRCPATH $HGRCPATH.orig
4 4
5 5 init repo
6 6
7 7 $ chg init foo
8 8 $ cd foo
9 9
10 10 ill-formed config
11 11
12 12 $ chg status
13 13 $ echo '=brokenconfig' >> $HGRCPATH
14 14 $ chg status
15 15 hg: parse error at * (glob)
16 16 [255]
17 17
18 alias having an environment variable and set to use pager
19
20 $ rm $HGRCPATH
21 $ cat >> $HGRCPATH <<'EOF'
22 > [ui]
23 > formatted = yes
24 > [extensions]
25 > pager =
26 > [pager]
27 > pager = sed -e 's/^/P/'
28 > attend = printa
29 > [alias]
30 > printa = log -T "$A\n" -r 0
31 > EOF
32
33 $ A=1 chg printa
34 P1
35 $ A=2 chg printa
36 P2
37
38 18 $ cp $HGRCPATH.orig $HGRCPATH
39 19 $ cd ..
40 20
41 21 server lifecycle
42 22 ----------------
43 23
44 24 chg server should be restarted on code change, and old server will shut down
45 25 automatically. In this test, we use the following time parameters:
46 26
47 27 - "sleep 1" to make mtime different
48 28 - "sleep 2" to notice mtime change (polling interval is 1 sec)
49 29
50 30 set up repository with an extension:
51 31
52 32 $ chg init extreload
53 33 $ cd extreload
54 34 $ touch dummyext.py
55 35 $ cat <<EOF >> .hg/hgrc
56 36 > [extensions]
57 37 > dummyext = dummyext.py
58 38 > EOF
59 39
60 40 isolate socket directory for stable result:
61 41
62 42 $ OLDCHGSOCKNAME=$CHGSOCKNAME
63 43 $ mkdir chgsock
64 44 $ CHGSOCKNAME=`pwd`/chgsock/server
65 45
66 46 warm up server:
67 47
68 48 $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
69 49 chg: debug: start cmdserver at $TESTTMP/extreload/chgsock/server
70 50
71 51 new server should be started if extension modified:
72 52
73 53 $ sleep 1
74 54 $ touch dummyext.py
75 55 $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
76 56 chg: debug: instruction: unlink $TESTTMP/extreload/chgsock/server-* (glob)
77 57 chg: debug: instruction: reconnect
78 58 chg: debug: start cmdserver at $TESTTMP/extreload/chgsock/server
79 59
80 60 old server will shut down, while new server should still be reachable:
81 61
82 62 $ sleep 2
83 63 $ CHGDEBUG= chg log 2>&1 | (egrep 'instruction|start' || true)
84 64
85 65 socket file should never be unlinked by old server:
86 66 (simulates unowned socket by updating mtime, which makes sure server exits
87 67 at polling cycle)
88 68
89 69 $ ls chgsock/server-*
90 70 chgsock/server-* (glob)
91 71 $ touch chgsock/server-*
92 72 $ sleep 2
93 73 $ ls chgsock/server-*
94 74 chgsock/server-* (glob)
95 75
96 76 since no server is reachable from socket file, new server should be started:
97 77 (this test makes sure that old server shut down automatically)
98 78
99 79 $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
100 80 chg: debug: start cmdserver at $TESTTMP/extreload/chgsock/server
101 81
102 82 shut down servers and restore environment:
103 83
104 84 $ rm -R chgsock
105 85 $ CHGSOCKNAME=$OLDCHGSOCKNAME
106 86 $ cd ..
@@ -1,191 +1,203 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 > [extensions]
14 14 > pager=
15 15 > [pager]
16 16 > pager = python $TESTTMP/fakepager.py
17 17 > EOF
18 18
19 19 $ hg init repo
20 20 $ cd repo
21 21 $ echo a >> a
22 22 $ hg add a
23 23 $ hg ci -m 'add a'
24 24 $ for x in `python $TESTDIR/seq.py 1 10`; do
25 25 > echo a $x >> a
26 26 > hg ci -m "modify a $x"
27 27 > done
28 28
29 29 By default diff and log are paged, but summary is not:
30 30
31 31 $ hg diff -c 2 --pager=yes
32 32 paged! 'diff -r f4be7687d414 -r bce265549556 a\n'
33 33 paged! '--- a/a\tThu Jan 01 00:00:00 1970 +0000\n'
34 34 paged! '+++ b/a\tThu Jan 01 00:00:00 1970 +0000\n'
35 35 paged! '@@ -1,2 +1,3 @@\n'
36 36 paged! ' a\n'
37 37 paged! ' a 1\n'
38 38 paged! '+a 2\n'
39 39
40 40 $ hg log --limit 2
41 41 paged! 'changeset: 10:46106edeeb38\n'
42 42 paged! 'tag: tip\n'
43 43 paged! 'user: test\n'
44 44 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
45 45 paged! 'summary: modify a 10\n'
46 46 paged! '\n'
47 47 paged! 'changeset: 9:6dd8ea7dd621\n'
48 48 paged! 'user: test\n'
49 49 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
50 50 paged! 'summary: modify a 9\n'
51 51 paged! '\n'
52 52
53 53 $ hg summary
54 54 parent: 10:46106edeeb38 tip
55 55 modify a 10
56 56 branch: default
57 57 commit: (clean)
58 58 update: (current)
59 59 phases: 11 draft
60 60
61 61 We can enable the pager on summary:
62 62
63 63 $ hg --config pager.attend-summary=yes summary
64 64 paged! 'parent: 10:46106edeeb38 tip\n'
65 65 paged! ' modify a 10\n'
66 66 paged! 'branch: default\n'
67 67 paged! 'commit: (clean)\n'
68 68 paged! 'update: (current)\n'
69 69 paged! 'phases: 11 draft\n'
70 70
71 71 If we completely change the attend list that's respected:
72 72
73 73 $ hg --config pager.attend-diff=no diff -c 2
74 74 diff -r f4be7687d414 -r bce265549556 a
75 75 --- a/a Thu Jan 01 00:00:00 1970 +0000
76 76 +++ b/a Thu Jan 01 00:00:00 1970 +0000
77 77 @@ -1,2 +1,3 @@
78 78 a
79 79 a 1
80 80 +a 2
81 81
82 82 $ hg --config pager.attend=summary diff -c 2
83 83 diff -r f4be7687d414 -r bce265549556 a
84 84 --- a/a Thu Jan 01 00:00:00 1970 +0000
85 85 +++ b/a Thu Jan 01 00:00:00 1970 +0000
86 86 @@ -1,2 +1,3 @@
87 87 a
88 88 a 1
89 89 +a 2
90 90
91 91 If 'log' is in attend, then 'history' should also be paged:
92 92 $ hg history --limit 2 --config pager.attend=log
93 93 paged! 'changeset: 10:46106edeeb38\n'
94 94 paged! 'tag: tip\n'
95 95 paged! 'user: test\n'
96 96 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
97 97 paged! 'summary: modify a 10\n'
98 98 paged! '\n'
99 99 paged! 'changeset: 9:6dd8ea7dd621\n'
100 100 paged! 'user: test\n'
101 101 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
102 102 paged! 'summary: modify a 9\n'
103 103 paged! '\n'
104 104
105 105 Possible bug: history is explicitly ignored in pager config, but
106 106 because log is in the attend list it still gets pager treatment.
107 107
108 108 $ hg history --limit 2 --config pager.attend=log \
109 109 > --config pager.ignore=history
110 110 paged! 'changeset: 10:46106edeeb38\n'
111 111 paged! 'tag: tip\n'
112 112 paged! 'user: test\n'
113 113 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
114 114 paged! 'summary: modify a 10\n'
115 115 paged! '\n'
116 116 paged! 'changeset: 9:6dd8ea7dd621\n'
117 117 paged! 'user: test\n'
118 118 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
119 119 paged! 'summary: modify a 9\n'
120 120 paged! '\n'
121 121
122 122 Possible bug: history is explicitly marked as attend-history=no, but
123 123 it doesn't fail to get paged because log is still in the attend list.
124 124
125 125 $ hg history --limit 2 --config pager.attend-history=no
126 126 paged! 'changeset: 10:46106edeeb38\n'
127 127 paged! 'tag: tip\n'
128 128 paged! 'user: test\n'
129 129 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
130 130 paged! 'summary: modify a 10\n'
131 131 paged! '\n'
132 132 paged! 'changeset: 9:6dd8ea7dd621\n'
133 133 paged! 'user: test\n'
134 134 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
135 135 paged! 'summary: modify a 9\n'
136 136 paged! '\n'
137 137
138 138 Possible bug: disabling pager for log but enabling it for history
139 139 doesn't result in history being paged.
140 140
141 141 $ hg history --limit 2 --config pager.attend-log=no \
142 142 > --config pager.attend-history=yes
143 143 changeset: 10:46106edeeb38
144 144 tag: tip
145 145 user: test
146 146 date: Thu Jan 01 00:00:00 1970 +0000
147 147 summary: modify a 10
148 148
149 149 changeset: 9:6dd8ea7dd621
150 150 user: test
151 151 date: Thu Jan 01 00:00:00 1970 +0000
152 152 summary: modify a 9
153 153
154 154
155 155 Pager with color enabled allows colors to come through by default,
156 156 even though stdout is no longer a tty.
157 157 $ cat >> $HGRCPATH <<EOF
158 158 > [extensions]
159 159 > color=
160 160 > [color]
161 161 > mode = ansi
162 162 > EOF
163 163 $ hg log --limit 3
164 164 paged! '\x1b[0;33mchangeset: 10:46106edeeb38\x1b[0m\n'
165 165 paged! 'tag: tip\n'
166 166 paged! 'user: test\n'
167 167 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
168 168 paged! 'summary: modify a 10\n'
169 169 paged! '\n'
170 170 paged! '\x1b[0;33mchangeset: 9:6dd8ea7dd621\x1b[0m\n'
171 171 paged! 'user: test\n'
172 172 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
173 173 paged! 'summary: modify a 9\n'
174 174 paged! '\n'
175 175 paged! '\x1b[0;33mchangeset: 8:cff05a6312fe\x1b[0m\n'
176 176 paged! 'user: test\n'
177 177 paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n'
178 178 paged! 'summary: modify a 8\n'
179 179 paged! '\n'
180 180
181 181 Pager works with shell aliases.
182 182
183 183 $ cat >> $HGRCPATH <<EOF
184 184 > [alias]
185 185 > echoa = !echo a
186 186 > EOF
187 187
188 188 $ hg echoa
189 189 a
190 190 $ hg --config pager.attend-echoa=yes echoa
191 191 paged! 'a\n'
192
193 Pager works with hg aliases including environment variables.
194
195 $ cat >> $HGRCPATH <<'EOF'
196 > [alias]
197 > printa = log -T "$A\n" -r 0
198 > EOF
199
200 $ A=1 hg --config pager.attend-printa=yes printa
201 paged! '1\n'
202 $ A=2 hg --config pager.attend-printa=yes printa
203 paged! '2\n'
General Comments 0
You need to be logged in to leave comments. Login now