##// END OF EJS Templates
test-progress: disable mocking-time tests on chg...
Yuya Nishihara -
r28881:d9f7f590 default
parent child Browse files
Show More
@@ -1,346 +1,350
1 1
2 2 $ cat > loop.py <<EOF
3 3 > from mercurial import cmdutil, commands
4 4 > import time
5 5 >
6 6 > cmdtable = {}
7 7 > command = cmdutil.command(cmdtable)
8 8 >
9 9 > class incrementingtime(object):
10 10 > def __init__(self):
11 11 > self._time = 0.0
12 12 > def __call__(self):
13 13 > self._time += 0.25
14 14 > return self._time
15 15 > time.time = incrementingtime()
16 16 >
17 17 > @command('loop',
18 18 > [('', 'total', '', 'override for total'),
19 19 > ('', 'nested', False, 'show nested results'),
20 20 > ('', 'parallel', False, 'show parallel sets of results')],
21 21 > 'hg loop LOOPS',
22 22 > norepo=True)
23 23 > def loop(ui, loops, **opts):
24 24 > loops = int(loops)
25 25 > total = None
26 26 > if loops >= 0:
27 27 > total = loops
28 28 > if opts.get('total', None):
29 29 > total = int(opts.get('total'))
30 30 > nested = False
31 31 > if opts.get('nested', None):
32 32 > nested = True
33 33 > loops = abs(loops)
34 34 >
35 35 > for i in range(loops):
36 36 > ui.progress(topiclabel, i, getloopitem(i), 'loopnum', total)
37 37 > if opts.get('parallel'):
38 38 > ui.progress('other', i, 'other.%d' % i, 'othernum', total)
39 39 > if nested:
40 40 > nested_steps = 2
41 41 > if i and i % 4 == 0:
42 42 > nested_steps = 5
43 43 > for j in range(nested_steps):
44 44 > ui.progress(
45 45 > 'nested', j, 'nested.%d' % j, 'nestnum', nested_steps)
46 46 > ui.progress(
47 47 > 'nested', None, 'nested.done', 'nestnum', nested_steps)
48 48 > ui.progress(topiclabel, None, 'loop.done', 'loopnum', total)
49 49 >
50 50 > topiclabel = 'loop'
51 51 > def getloopitem(i):
52 52 > return 'loop.%d' % i
53 53 >
54 54 > EOF
55 55
56 56 $ cp $HGRCPATH $HGRCPATH.orig
57 57 $ echo "[extensions]" >> $HGRCPATH
58 58 $ echo "progress=" >> $HGRCPATH
59 59 $ echo "loop=`pwd`/loop.py" >> $HGRCPATH
60 60 $ echo "[progress]" >> $HGRCPATH
61 61 $ echo "format = topic bar number" >> $HGRCPATH
62 62 $ echo "assume-tty=1" >> $HGRCPATH
63 63 $ echo "width=60" >> $HGRCPATH
64 64
65 65 test default params, display nothing because of delay
66 66
67 67 $ hg -y loop 3
68 68 $ echo "delay=0" >> $HGRCPATH
69 69 $ echo "refresh=0" >> $HGRCPATH
70 70
71 71 test with delay=0, refresh=0
72 72
73 73 $ hg -y loop 3
74 74 \r (no-eol) (esc)
75 75 loop [ ] 0/3\r (no-eol) (esc)
76 76 loop [===============> ] 1/3\r (no-eol) (esc)
77 77 loop [===============================> ] 2/3\r (no-eol) (esc)
78 78 \r (no-eol) (esc)
79 79 no progress with --quiet
80 80 $ hg -y loop 3 --quiet
81 81
82 82 test plain mode exception
83 83 $ HGPLAINEXCEPT=progress hg -y loop 1
84 84 \r (no-eol) (esc)
85 85 loop [ ] 0/1\r (no-eol) (esc)
86 86 \r (no-eol) (esc)
87 87
88 88 test nested short-lived topics (which shouldn't display with nestdelay):
89 89
90 90 $ hg -y loop 3 --nested
91 91 \r (no-eol) (esc)
92 92 loop [ ] 0/3\r (no-eol) (esc)
93 93 loop [===============> ] 1/3\r (no-eol) (esc)
94 94 loop [===============================> ] 2/3\r (no-eol) (esc)
95 95 \r (no-eol) (esc)
96 96
97 97 Test nested long-lived topic which has the same name as a short-lived
98 98 peer. We shouldn't get stuck showing the short-lived inner steps, and
99 99 should go back to skipping the inner steps when the slow nested step
100 100 finishes.
101 101
102 102 $ hg -y loop 7 --nested
103 103 \r (no-eol) (esc)
104 104 loop [ ] 0/7\r (no-eol) (esc)
105 105 loop [=====> ] 1/7\r (no-eol) (esc)
106 106 loop [============> ] 2/7\r (no-eol) (esc)
107 107 loop [===================> ] 3/7\r (no-eol) (esc)
108 108 loop [==========================> ] 4/7\r (no-eol) (esc)
109 109 nested [==========================> ] 3/5\r (no-eol) (esc)
110 110 nested [===================================> ] 4/5\r (no-eol) (esc)
111 111 loop [=================================> ] 5/7\r (no-eol) (esc)
112 112 loop [========================================> ] 6/7\r (no-eol) (esc)
113 113 \r (no-eol) (esc)
114 114
115 115
116 116 $ hg --config progress.changedelay=0 -y loop 3 --nested
117 117 \r (no-eol) (esc)
118 118 loop [ ] 0/3\r (no-eol) (esc)
119 119 nested [ ] 0/2\r (no-eol) (esc)
120 120 nested [======================> ] 1/2\r (no-eol) (esc)
121 121 loop [===============> ] 1/3\r (no-eol) (esc)
122 122 nested [ ] 0/2\r (no-eol) (esc)
123 123 nested [======================> ] 1/2\r (no-eol) (esc)
124 124 loop [===============================> ] 2/3\r (no-eol) (esc)
125 125 nested [ ] 0/2\r (no-eol) (esc)
126 126 nested [======================> ] 1/2\r (no-eol) (esc)
127 127 \r (no-eol) (esc)
128 128
129 129
130 130 test two topics being printed in parallel (as when we're doing a local
131 131 --pull clone, where you get the unbundle and bundle progress at the
132 132 same time):
133 133 $ hg loop 3 --parallel
134 134 \r (no-eol) (esc)
135 135 loop [ ] 0/3\r (no-eol) (esc)
136 136 loop [===============> ] 1/3\r (no-eol) (esc)
137 137 loop [===============================> ] 2/3\r (no-eol) (esc)
138 138 \r (no-eol) (esc)
139 139 test refresh is taken in account
140 140
141 141 $ hg -y --config progress.refresh=100 loop 3
142 142
143 143 test format options 1
144 144
145 145 $ hg -y --config 'progress.format=number topic item+2' loop 2
146 146 \r (no-eol) (esc)
147 147 0/2 loop lo\r (no-eol) (esc)
148 148 1/2 loop lo\r (no-eol) (esc)
149 149 \r (no-eol) (esc)
150 150
151 151 test format options 2
152 152
153 153 $ hg -y --config 'progress.format=number item-3 bar' loop 2
154 154 \r (no-eol) (esc)
155 155 0/2 p.0 [ ]\r (no-eol) (esc)
156 156 1/2 p.1 [=======================> ]\r (no-eol) (esc)
157 157 \r (no-eol) (esc)
158 158
159 159 test format options and indeterminate progress
160 160
161 161 $ hg -y --config 'progress.format=number item bar' loop -- -2
162 162 \r (no-eol) (esc)
163 163 0 loop.0 [ <=> ]\r (no-eol) (esc)
164 164 1 loop.1 [ <=> ]\r (no-eol) (esc)
165 165 \r (no-eol) (esc)
166 166
167 167 make sure things don't fall over if count > total
168 168
169 169 $ hg -y loop --total 4 6
170 170 \r (no-eol) (esc)
171 171 loop [ ] 0/4\r (no-eol) (esc)
172 172 loop [===========> ] 1/4\r (no-eol) (esc)
173 173 loop [=======================> ] 2/4\r (no-eol) (esc)
174 174 loop [===================================> ] 3/4\r (no-eol) (esc)
175 175 loop [===============================================>] 4/4\r (no-eol) (esc)
176 176 loop [ <=> ] 5/4\r (no-eol) (esc)
177 177 \r (no-eol) (esc)
178 178
179 179 test immediate progress completion
180 180
181 181 $ hg -y loop 0
182 182
183 183 test delay time estimates
184 184
185 #if no-chg
186
185 187 $ cat > mocktime.py <<EOF
186 188 > import os
187 189 > import time
188 190 >
189 191 > class mocktime(object):
190 192 > def __init__(self, increment):
191 193 > self.time = 0
192 194 > self.increment = increment
193 195 > def __call__(self):
194 196 > self.time += self.increment
195 197 > return self.time
196 198 >
197 199 > def uisetup(ui):
198 200 > time.time = mocktime(int(os.environ.get('MOCKTIME', '11')))
199 201 > EOF
200 202
201 203 $ cp $HGRCPATH.orig $HGRCPATH
202 204 $ echo "[extensions]" >> $HGRCPATH
203 205 $ echo "mocktime=`pwd`/mocktime.py" >> $HGRCPATH
204 206 $ echo "progress=" >> $HGRCPATH
205 207 $ echo "loop=`pwd`/loop.py" >> $HGRCPATH
206 208 $ echo "[progress]" >> $HGRCPATH
207 209 $ echo "assume-tty=1" >> $HGRCPATH
208 210 $ echo "delay=25" >> $HGRCPATH
209 211 $ echo "width=60" >> $HGRCPATH
210 212
211 213 $ hg -y loop 8
212 214 \r (no-eol) (esc)
213 215 loop [=========> ] 2/8 1m07s\r (no-eol) (esc)
214 216 loop [===============> ] 3/8 56s\r (no-eol) (esc)
215 217 loop [=====================> ] 4/8 45s\r (no-eol) (esc)
216 218 loop [==========================> ] 5/8 34s\r (no-eol) (esc)
217 219 loop [================================> ] 6/8 23s\r (no-eol) (esc)
218 220 loop [=====================================> ] 7/8 12s\r (no-eol) (esc)
219 221 \r (no-eol) (esc)
220 222
221 223 $ MOCKTIME=10000 hg -y loop 4
222 224 \r (no-eol) (esc)
223 225 loop [ ] 0/4\r (no-eol) (esc)
224 226 loop [=========> ] 1/4 8h21m\r (no-eol) (esc)
225 227 loop [====================> ] 2/4 5h34m\r (no-eol) (esc)
226 228 loop [==============================> ] 3/4 2h47m\r (no-eol) (esc)
227 229 \r (no-eol) (esc)
228 230
229 231 $ MOCKTIME=1000000 hg -y loop 4
230 232 \r (no-eol) (esc)
231 233 loop [ ] 0/4\r (no-eol) (esc)
232 234 loop [=========> ] 1/4 5w00d\r (no-eol) (esc)
233 235 loop [====================> ] 2/4 3w03d\r (no-eol) (esc)
234 236 loop [=============================> ] 3/4 11d14h\r (no-eol) (esc)
235 237 \r (no-eol) (esc)
236 238
237 239
238 240 $ MOCKTIME=14000000 hg -y loop 4
239 241 \r (no-eol) (esc)
240 242 loop [ ] 0/4\r (no-eol) (esc)
241 243 loop [=========> ] 1/4 1y18w\r (no-eol) (esc)
242 244 loop [===================> ] 2/4 46w03d\r (no-eol) (esc)
243 245 loop [=============================> ] 3/4 23w02d\r (no-eol) (esc)
244 246 \r (no-eol) (esc)
245 247
246 248 Time estimates should not fail when there's no end point:
247 249 $ hg -y loop -- -4
248 250 \r (no-eol) (esc)
249 251 loop [ <=> ] 2\r (no-eol) (esc)
250 252 loop [ <=> ] 3\r (no-eol) (esc)
251 253 \r (no-eol) (esc)
252 254
255 #endif
256
253 257 test line trimming by '[progress] width', when progress topic contains
254 258 multi-byte characters, of which length of byte sequence and columns in
255 259 display are different from each other.
256 260
257 261 $ cp $HGRCPATH.orig $HGRCPATH
258 262 $ cat >> $HGRCPATH <<EOF
259 263 > [extensions]
260 264 > progress=
261 265 > loop=`pwd`/loop.py
262 266 > [progress]
263 267 > assume-tty = 1
264 268 > delay = 0
265 269 > refresh = 0
266 270 > EOF
267 271
268 272 $ rm -f loop.pyc
269 273 $ cat >> loop.py <<EOF
270 274 > # use non-ascii characters as topic label of progress
271 275 > # 2 x 4 = 8 columns, but 3 x 4 = 12 bytes
272 276 > topiclabel = u'\u3042\u3044\u3046\u3048'.encode('utf-8')
273 277 > EOF
274 278
275 279 $ cat >> $HGRCPATH <<EOF
276 280 > [progress]
277 281 > format = topic number
278 282 > width= 12
279 283 > EOF
280 284
281 285 $ hg --encoding utf-8 -y loop --total 3 3
282 286 \r (no-eol) (esc)
283 287 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 0/3\r (no-eol) (esc)
284 288 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 1/3\r (no-eol) (esc)
285 289 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 2/3\r (no-eol) (esc)
286 290 \r (no-eol) (esc)
287 291
288 292 test calculation of bar width, when progress topic contains multi-byte
289 293 characters, of which length of byte sequence and columns in display
290 294 are different from each other.
291 295
292 296 $ cat >> $HGRCPATH <<EOF
293 297 > [progress]
294 298 > format = topic bar
295 299 > width= 21
296 300 > # progwidth should be 9 (= 21 - (8+1) - 3)
297 301 > EOF
298 302
299 303 $ hg --encoding utf-8 -y loop --total 3 3
300 304 \r (no-eol) (esc)
301 305 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 [ ]\r (no-eol) (esc)
302 306 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 [==> ]\r (no-eol) (esc)
303 307 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 [=====> ]\r (no-eol) (esc)
304 308 \r (no-eol) (esc)
305 309
306 310 test trimming progress items, when they contain multi-byte characters,
307 311 of which length of byte sequence and columns in display are different
308 312 from each other.
309 313
310 314 $ rm -f loop.pyc
311 315 $ cat >> loop.py <<EOF
312 316 > # use non-ascii characters as loop items of progress
313 317 > loopitems = [
314 318 > u'\u3042\u3044'.encode('utf-8'), # 2 x 2 = 4 columns
315 319 > u'\u3042\u3044\u3046'.encode('utf-8'), # 2 x 3 = 6 columns
316 320 > u'\u3042\u3044\u3046\u3048'.encode('utf-8'), # 2 x 4 = 8 columns
317 321 > ]
318 322 > def getloopitem(i):
319 323 > return loopitems[i % len(loopitems)]
320 324 > EOF
321 325
322 326 $ cat >> $HGRCPATH <<EOF
323 327 > [progress]
324 328 > # trim at tail side
325 329 > format = item+6
326 330 > EOF
327 331
328 332 $ hg --encoding utf-8 -y loop --total 3 3
329 333 \r (no-eol) (esc)
330 334 \xe3\x81\x82\xe3\x81\x84 \r (no-eol) (esc)
331 335 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\r (no-eol) (esc)
332 336 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\r (no-eol) (esc)
333 337 \r (no-eol) (esc)
334 338
335 339 $ cat >> $HGRCPATH <<EOF
336 340 > [progress]
337 341 > # trim at left side
338 342 > format = item-6
339 343 > EOF
340 344
341 345 $ hg --encoding utf-8 -y loop --total 3 3
342 346 \r (no-eol) (esc)
343 347 \xe3\x81\x82\xe3\x81\x84 \r (no-eol) (esc)
344 348 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\r (no-eol) (esc)
345 349 \xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\r (no-eol) (esc)
346 350 \r (no-eol) (esc)
General Comments 0
You need to be logged in to leave comments. Login now