comparison tests/test-progress.t @ 19619:4694ccd5d994

progress: stop getting stuck in a nested topic during a long inner step Convert, for example, has loops like this: for revision in source_repo: progress(revisions) for file in revision: progresss(file) Prior to this change, we would start showing the file-level progress when we encountered a big revision, and then we'd get stuck in showing file-progress instead of revision progress, often producing many many instantly-completing progress bars rather than the actually-helpful top-level revisions bar.
author Augie Fackler <raf@durin42.com>
date Fri, 23 Aug 2013 13:28:18 -0400
parents 41e39a0299cb
children 51e5c793a9f4
comparison
equal deleted inserted replaced
19618:6ac206fb6f27 19619:4694ccd5d994
1 1
2 $ cat > loop.py <<EOF 2 $ cat > loop.py <<EOF
3 > from mercurial import commands 3 > from mercurial import commands
4 > import time
5 > class incrementingtime(object):
6 > def __init__(self):
7 > self._time = 0.0
8 > def __call__(self):
9 > self._time += 0.25
10 > return self._time
11 > time.time = incrementingtime()
4 > 12 >
5 > def loop(ui, loops, **opts): 13 > def loop(ui, loops, **opts):
6 > loops = int(loops) 14 > loops = int(loops)
7 > total = None 15 > total = None
8 > if loops >= 0: 16 > if loops >= 0:
17 > for i in range(loops): 25 > for i in range(loops):
18 > ui.progress('loop', i, 'loop.%d' % i, 'loopnum', total) 26 > ui.progress('loop', i, 'loop.%d' % i, 'loopnum', total)
19 > if opts.get('parallel'): 27 > if opts.get('parallel'):
20 > ui.progress('other', i, 'other.%d' % i, 'othernum', total) 28 > ui.progress('other', i, 'other.%d' % i, 'othernum', total)
21 > if nested: 29 > if nested:
22 > for j in range(2): 30 > nested_steps = 2
23 > ui.progress('nested', j, 'nested.%d' % j, 'nestnum', 2) 31 > if i and i % 4 == 0:
24 > ui.progress('nested', None, 'nested.done', 'nestnum', 2) 32 > nested_steps = 5
33 > for j in range(nested_steps):
34 > ui.progress(
35 > 'nested', j, 'nested.%d' % j, 'nestnum', nested_steps)
36 > ui.progress(
37 > 'nested', None, 'nested.done', 'nestnum', nested_steps)
25 > ui.progress('loop', None, 'loop.done', 'loopnum', total) 38 > ui.progress('loop', None, 'loop.done', 'loopnum', total)
26 > 39 >
27 > commands.norepo += " loop" 40 > commands.norepo += " loop"
28 > 41 >
29 > cmdtable = { 42 > cmdtable = {
65 $ hg -y loop 3 --nested 78 $ hg -y loop 3 --nested
66 \r (no-eol) (esc) 79 \r (no-eol) (esc)
67 loop [ ] 0/3\r (no-eol) (esc) 80 loop [ ] 0/3\r (no-eol) (esc)
68 loop [===============> ] 1/3\r (no-eol) (esc) 81 loop [===============> ] 1/3\r (no-eol) (esc)
69 loop [===============================> ] 2/3\r (no-eol) (esc) 82 loop [===============================> ] 2/3\r (no-eol) (esc)
83 \r (no-eol) (esc)
84
85 Test nested long-lived topic which has the same name as a short-lived
86 peer. We shouldn't get stuck showing the short-lived inner steps, and
87 should go back to skipping the inner steps when the slow nested step
88 finishes.
89
90 $ hg -y loop 7 --nested
91 \r (no-eol) (esc)
92 loop [ ] 0/7\r (no-eol) (esc)
93 loop [=====> ] 1/7\r (no-eol) (esc)
94 loop [============> ] 2/7\r (no-eol) (esc)
95 loop [===================> ] 3/7\r (no-eol) (esc)
96 loop [==========================> ] 4/7\r (no-eol) (esc)
97 nested [==========================> ] 3/5\r (no-eol) (esc)
98 nested [===================================> ] 4/5\r (no-eol) (esc)
99 loop [=================================> ] 5/7\r (no-eol) (esc)
100 loop [========================================> ] 6/7\r (no-eol) (esc)
70 \r (no-eol) (esc) 101 \r (no-eol) (esc)
71 102
72 103
73 $ hg --config progress.changedelay=0 -y loop 3 --nested 104 $ hg --config progress.changedelay=0 -y loop 3 --nested
74 \r (no-eol) (esc) 105 \r (no-eol) (esc)