Mercurial > hg
changeset 34316:12b355964de8
test-patchbomb: use mocktime
The test was using system time for displaying ETAs, which could be flaky if
the sysload is high. This patch extracts mocktime.py from test-progress.t to
make sure test-patchbomb.t is unaffected by system time.
Differential Revision: https://phab.mercurial-scm.org/D844
author | Jun Wu <quark@fb.com> |
---|---|
date | Fri, 29 Sep 2017 11:41:24 -0700 |
parents | 98b359216915 |
children | e45ec589f962 |
files | tests/mocktime.py tests/test-patchbomb.t tests/test-progress.t |
diffstat | 3 files changed, 23 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/mocktime.py Fri Sep 29 11:41:24 2017 -0700 @@ -0,0 +1,18 @@ +from __future__ import absolute_import + +import os +import time + +class mocktime(object): + def __init__(self, increment): + self.time = 0 + self.increment = [float(s) for s in increment.split()] + self.pos = 0 + + def __call__(self): + self.time += self.increment[self.pos % len(self.increment)] + self.pos += 1 + return self.time + +def uisetup(ui): + time.time = mocktime(os.environ.get('MOCKTIME', '0.1'))
--- a/tests/test-patchbomb.t Thu Sep 28 10:37:53 2017 -0700 +++ b/tests/test-patchbomb.t Fri Sep 29 11:41:24 2017 -0700 @@ -323,7 +323,8 @@ $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip \ > --config extensions.progress= --config progress.assume-tty=1 \ > --config progress.delay=0 --config progress.refresh=0 \ - > --config progress.width=60 + > --config progress.width=60 \ + > --config extensions.mocktime=$TESTDIR/mocktime.py this patch series consists of 2 patches.
--- a/tests/test-progress.t Thu Sep 28 10:37:53 2017 -0700 +++ b/tests/test-progress.t Fri Sep 29 11:41:24 2017 -0700 @@ -185,27 +185,9 @@ #if no-chg - $ cat > mocktime.py <<EOF - > import os - > import time - > - > class mocktime(object): - > def __init__(self, increment): - > self.time = 0 - > self.increment = [int(s) for s in increment.split()] - > self.pos = 0 - > def __call__(self): - > self.time += self.increment[self.pos % len(self.increment)] - > self.pos += 1 - > return self.time - > - > def uisetup(ui): - > time.time = mocktime(os.environ.get('MOCKTIME', '11')) - > EOF - $ cp $HGRCPATH.orig $HGRCPATH $ echo "[extensions]" >> $HGRCPATH - $ echo "mocktime=`pwd`/mocktime.py" >> $HGRCPATH + $ echo "mocktime=$TESTDIR/mocktime.py" >> $HGRCPATH $ echo "progress=" >> $HGRCPATH $ echo "loop=`pwd`/loop.py" >> $HGRCPATH $ echo "[progress]" >> $HGRCPATH @@ -213,7 +195,7 @@ $ echo "delay=25" >> $HGRCPATH $ echo "width=60" >> $HGRCPATH - $ hg -y loop 8 + $ MOCKTIME=11 hg -y loop 8 \r (no-eol) (esc) loop [=========> ] 2/8 1m07s\r (no-eol) (esc) loop [===============> ] 3/8 56s\r (no-eol) (esc) @@ -274,7 +256,7 @@ \r (no-eol) (esc) Time estimates should not fail when there's no end point: - $ hg -y loop -- -4 + $ MOCKTIME=11 hg -y loop -- -4 \r (no-eol) (esc) loop [ <=> ] 2\r (no-eol) (esc) loop [ <=> ] 3\r (no-eol) (esc)