mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
8d01284b55
Reviewed By: quark-zju Differential Revision: D7329657 fbshipit-source-id: 4ba5152269ea8a598f13f0ae1e9e792c3b9542bb
80 lines
2.2 KiB
Python
80 lines
2.2 KiB
Python
from __future__ import absolute_import
|
|
|
|
import time
|
|
|
|
from mercurial import (
|
|
progress,
|
|
registrar,
|
|
)
|
|
|
|
cmdtable = {}
|
|
command = registrar.command(cmdtable)
|
|
|
|
class faketime(object):
|
|
def __init__(self):
|
|
self.now = 0
|
|
|
|
def time(self):
|
|
return self.now
|
|
|
|
def increment(self):
|
|
now = self.now
|
|
self.now += 1
|
|
return now
|
|
|
|
_faketime = faketime()
|
|
time.time = _faketime.time
|
|
|
|
unicodeloopitems = [
|
|
u'\u3042\u3044'.encode('utf-8'), # 2 x 2 = 4 columns
|
|
u'\u3042\u3044\u3046'.encode('utf-8'), # 2 x 3 = 6 columns
|
|
u'\u3042\u3044\u3046\u3048'.encode('utf-8'), # 2 x 4 = 8 columns
|
|
]
|
|
|
|
@command('progresstest',
|
|
[('', 'nested', False, 'show nested results'),
|
|
('', 'unicode', False, 'use unicode topics and items'),
|
|
('', 'output', False, 'output text on each iteration')],
|
|
'hg progresstest loops total', norepo=True)
|
|
def progresstest(ui, loops, total, **opts):
|
|
loops = int(loops)
|
|
total = int(total)
|
|
if total == -1:
|
|
total = None
|
|
nested = opts.get('nested', None)
|
|
useunicode = opts.get('unicode', False)
|
|
if useunicode:
|
|
topic = u'\u3042\u3044\u3046\u3048'.encode('utf-8')
|
|
else:
|
|
topic = 'progress test'
|
|
with progress.bar(ui, topic, 'cycles', total) as prog:
|
|
for i in range(loops + 1):
|
|
if useunicode:
|
|
prog.value = (i, unicodeloopitems[i % len(unicodeloopitems)])
|
|
else:
|
|
prog.value = (i, 'loop %s' % i)
|
|
progress._engine.pump(_faketime.increment())
|
|
if nested:
|
|
nestedtotal = 5 if i % 6 == 5 else 2
|
|
with progress.bar(ui, 'nested progress',
|
|
total=nestedtotal) as nestedprog:
|
|
for j in range(nestedtotal + 1):
|
|
nestedprog.value = (j, 'nest %s' % j)
|
|
progress._engine.pump(_faketime.increment())
|
|
|
|
|
|
def uisetup(ui):
|
|
class syncengine(progress._engine.__class__):
|
|
def _activate(self):
|
|
pass
|
|
|
|
def _deactivate(self):
|
|
pass
|
|
|
|
def pump(self, now):
|
|
self._recalculatedisplay(now)
|
|
self._updateestimation(now)
|
|
self._show(now)
|
|
|
|
progress._engine.__class__ = syncengine
|