##// END OF EJS Templates
sslutil: inform the user about how to fix an incomplete certificate chain...
sslutil: inform the user about how to fix an incomplete certificate chain This is a Windows only thing. Unfortunately, the socket is closed at this point (so the certificate is unavailable to check the chain). That means it's printed out when verification fails as a guess, on the assumption that 1) most of the time verification won't fail, and 2) sites using expired or certs that are too new will be rare. Maybe this is an argument for adding more functionality to debugssl, to test for problems and print certificate info. Or maybe it's an argument for bundling certificates with the Windows builds. That idea was set aside when the enhanced SSL code went in last summer, and it looks like there were issues with using certifi on Windows anyway[1]. This was tested by deleting the certificate out of certmgr.msc > "Third-Party Root Certification Authorities" > "Certificates", seeing `hg pull` fail (with the new message), trying this command, and then successfully performing the pull command. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-October/089573.html

File last commit:

r33097:fce4ed29 default
r33494:30f2715b default
Show More
test-progress.t
350 lines | 13.1 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: unify test-progress
r12479
$ cat > loop.py <<EOF
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > from mercurial import commands, registrar
Augie Fackler
progress: stop getting stuck in a nested topic during a long inner step...
r19619 > import time
Gregory Szorc
tests: declare commands using decorator
r21254 >
> cmdtable = {}
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > command = registrar.command(cmdtable)
Gregory Szorc
tests: declare commands using decorator
r21254 >
Augie Fackler
progress: stop getting stuck in a nested topic during a long inner step...
r19619 > class incrementingtime(object):
> def __init__(self):
> self._time = 0.0
> def __call__(self):
> self._time += 0.25
> return self._time
> time.time = incrementingtime()
Matt Mackall
tests: unify test-progress
r12479 >
Pulkit Goyal
py3: make sure commands name are bytes in tests
r33097 > @command(b'loop',
Gregory Szorc
tests: declare commands using decorator
r21254 > [('', 'total', '', 'override for total'),
> ('', 'nested', False, 'show nested results'),
> ('', 'parallel', False, 'show parallel sets of results')],
Gregory Szorc
tests: define norepo in command decorator
r21773 > 'hg loop LOOPS',
> norepo=True)
Matt Mackall
tests: unify test-progress
r12479 > def loop(ui, loops, **opts):
> loops = int(loops)
> total = None
> if loops >= 0:
> total = loops
> if opts.get('total', None):
> total = int(opts.get('total'))
Augie Fackler
progress: add a changedelay to prevent parallel topics from flapping (issue2698)...
r14838 > nested = False
> if opts.get('nested', None):
> nested = True
Matt Mackall
tests: unify test-progress
r12479 > loops = abs(loops)
>
> for i in range(loops):
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 > ui.progress(topiclabel, i, getloopitem(i), 'loopnum', total)
Augie Fackler
progress: add a changedelay to prevent parallel topics from flapping (issue2698)...
r14838 > if opts.get('parallel'):
> ui.progress('other', i, 'other.%d' % i, 'othernum', total)
> if nested:
Augie Fackler
progress: stop getting stuck in a nested topic during a long inner step...
r19619 > nested_steps = 2
> if i and i % 4 == 0:
> nested_steps = 5
> for j in range(nested_steps):
> ui.progress(
> 'nested', j, 'nested.%d' % j, 'nestnum', nested_steps)
> ui.progress(
> 'nested', None, 'nested.done', 'nestnum', nested_steps)
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim output line correctly...
r21859 > ui.progress(topiclabel, None, 'loop.done', 'loopnum', total)
>
> topiclabel = 'loop'
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 > def getloopitem(i):
> return 'loop.%d' % i
Matt Mackall
tests: unify test-progress
r12479 >
> EOF
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ cp $HGRCPATH $HGRCPATH.orig
Matt Mackall
tests: unify test-progress
r12479 $ echo "[extensions]" >> $HGRCPATH
$ echo "progress=" >> $HGRCPATH
$ echo "loop=`pwd`/loop.py" >> $HGRCPATH
$ echo "[progress]" >> $HGRCPATH
Martin Geisler
test-progress: fix whitespace typo
r16675 $ echo "format = topic bar number" >> $HGRCPATH
Matt Mackall
tests: unify test-progress
r12479 $ echo "assume-tty=1" >> $HGRCPATH
Martin Geisler
progress: test setting progress.width...
r13142 $ echo "width=60" >> $HGRCPATH
Matt Mackall
tests: unify test-progress
r12479
test default params, display nothing because of delay
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y loop 3
Matt Mackall
tests: unify test-progress
r12479 $ echo "delay=0" >> $HGRCPATH
$ echo "refresh=0" >> $HGRCPATH
test with delay=0, refresh=0
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y loop 3
\r (no-eol) (esc)
loop [ ] 0/3\r (no-eol) (esc)
loop [===============> ] 1/3\r (no-eol) (esc)
loop [===============================> ] 2/3\r (no-eol) (esc)
\r (no-eol) (esc)
Augie Fackler
progress: respect ui.quiet (issue4726)...
r25581 no progress with --quiet
$ hg -y loop 3 --quiet
Augie Fackler
progress: add a changedelay to prevent parallel topics from flapping (issue2698)...
r14838
Matt Anderson
progress: display progress bar when HGPLAINEXCEPT contains "progress"...
r28171 test plain mode exception
$ HGPLAINEXCEPT=progress hg -y loop 1
\r (no-eol) (esc)
loop [ ] 0/1\r (no-eol) (esc)
\r (no-eol) (esc)
Augie Fackler
progress: add a changedelay to prevent parallel topics from flapping (issue2698)...
r14838 test nested short-lived topics (which shouldn't display with nestdelay):
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y loop 3 --nested
\r (no-eol) (esc)
loop [ ] 0/3\r (no-eol) (esc)
loop [===============> ] 1/3\r (no-eol) (esc)
loop [===============================> ] 2/3\r (no-eol) (esc)
\r (no-eol) (esc)
Augie Fackler
progress: add a changedelay to prevent parallel topics from flapping (issue2698)...
r14838
Augie Fackler
progress: stop getting stuck in a nested topic during a long inner step...
r19619 Test nested long-lived topic which has the same name as a short-lived
peer. We shouldn't get stuck showing the short-lived inner steps, and
should go back to skipping the inner steps when the slow nested step
finishes.
$ hg -y loop 7 --nested
\r (no-eol) (esc)
loop [ ] 0/7\r (no-eol) (esc)
loop [=====> ] 1/7\r (no-eol) (esc)
loop [============> ] 2/7\r (no-eol) (esc)
loop [===================> ] 3/7\r (no-eol) (esc)
loop [==========================> ] 4/7\r (no-eol) (esc)
nested [==========================> ] 3/5\r (no-eol) (esc)
nested [===================================> ] 4/5\r (no-eol) (esc)
loop [=================================> ] 5/7\r (no-eol) (esc)
loop [========================================> ] 6/7\r (no-eol) (esc)
\r (no-eol) (esc)
Augie Fackler
progress: add a changedelay to prevent parallel topics from flapping (issue2698)...
r14838
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg --config progress.changedelay=0 -y loop 3 --nested
\r (no-eol) (esc)
loop [ ] 0/3\r (no-eol) (esc)
nested [ ] 0/2\r (no-eol) (esc)
nested [======================> ] 1/2\r (no-eol) (esc)
loop [===============> ] 1/3\r (no-eol) (esc)
nested [ ] 0/2\r (no-eol) (esc)
nested [======================> ] 1/2\r (no-eol) (esc)
loop [===============================> ] 2/3\r (no-eol) (esc)
nested [ ] 0/2\r (no-eol) (esc)
nested [======================> ] 1/2\r (no-eol) (esc)
\r (no-eol) (esc)
Augie Fackler
progress: add a changedelay to prevent parallel topics from flapping (issue2698)...
r14838
test two topics being printed in parallel (as when we're doing a local
--pull clone, where you get the unbundle and bundle progress at the
same time):
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg loop 3 --parallel
\r (no-eol) (esc)
loop [ ] 0/3\r (no-eol) (esc)
loop [===============> ] 1/3\r (no-eol) (esc)
loop [===============================> ] 2/3\r (no-eol) (esc)
\r (no-eol) (esc)
Matt Mackall
tests: unify test-progress
r12479 test refresh is taken in account
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y --config progress.refresh=100 loop 3
Matt Mackall
tests: unify test-progress
r12479
test format options 1
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y --config 'progress.format=number topic item+2' loop 2
\r (no-eol) (esc)
0/2 loop lo\r (no-eol) (esc)
1/2 loop lo\r (no-eol) (esc)
\r (no-eol) (esc)
Matt Mackall
tests: unify test-progress
r12479
test format options 2
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y --config 'progress.format=number item-3 bar' loop 2
\r (no-eol) (esc)
0/2 p.0 [ ]\r (no-eol) (esc)
1/2 p.1 [=======================> ]\r (no-eol) (esc)
\r (no-eol) (esc)
Matt Mackall
tests: unify test-progress
r12479
test format options and indeterminate progress
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y --config 'progress.format=number item bar' loop -- -2
\r (no-eol) (esc)
0 loop.0 [ <=> ]\r (no-eol) (esc)
1 loop.1 [ <=> ]\r (no-eol) (esc)
\r (no-eol) (esc)
Matt Mackall
tests: unify test-progress
r12479
make sure things don't fall over if count > total
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y loop --total 4 6
\r (no-eol) (esc)
loop [ ] 0/4\r (no-eol) (esc)
loop [===========> ] 1/4\r (no-eol) (esc)
loop [=======================> ] 2/4\r (no-eol) (esc)
loop [===================================> ] 3/4\r (no-eol) (esc)
loop [===============================================>] 4/4\r (no-eol) (esc)
loop [ <=> ] 5/4\r (no-eol) (esc)
\r (no-eol) (esc)
Matt Mackall
tests: unify test-progress
r12479
test immediate progress completion
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y loop 0
Augie Fackler
test-progress: test completion estimates and progress bar delay
r13145
test delay time estimates
Yuya Nishihara
test-progress: disable mocking-time tests on chg...
r28881 #if no-chg
Augie Fackler
test-progress: test completion estimates and progress bar delay
r13145 $ cat > mocktime.py <<EOF
> import os
> import time
>
> class mocktime(object):
> def __init__(self, increment):
> self.time = 0
> self.increment = increment
> def __call__(self):
> self.time += self.increment
> return self.time
>
> def uisetup(ui):
> time.time = mocktime(int(os.environ.get('MOCKTIME', '11')))
> EOF
Matt Mackall
check-code: fix issues with finding patterns in unified tests, fix tests...
r15372 $ cp $HGRCPATH.orig $HGRCPATH
$ echo "[extensions]" >> $HGRCPATH
Augie Fackler
test-progress: test completion estimates and progress bar delay
r13145 $ echo "mocktime=`pwd`/mocktime.py" >> $HGRCPATH
$ echo "progress=" >> $HGRCPATH
$ echo "loop=`pwd`/loop.py" >> $HGRCPATH
$ echo "[progress]" >> $HGRCPATH
$ echo "assume-tty=1" >> $HGRCPATH
$ echo "delay=25" >> $HGRCPATH
$ echo "width=60" >> $HGRCPATH
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y loop 8
\r (no-eol) (esc)
loop [=========> ] 2/8 1m07s\r (no-eol) (esc)
loop [===============> ] 3/8 56s\r (no-eol) (esc)
loop [=====================> ] 4/8 45s\r (no-eol) (esc)
loop [==========================> ] 5/8 34s\r (no-eol) (esc)
loop [================================> ] 6/8 23s\r (no-eol) (esc)
loop [=====================================> ] 7/8 12s\r (no-eol) (esc)
\r (no-eol) (esc)
Augie Fackler
test-progress: test completion estimates and progress bar delay
r13145
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ MOCKTIME=10000 hg -y loop 4
\r (no-eol) (esc)
loop [ ] 0/4\r (no-eol) (esc)
loop [=========> ] 1/4 8h21m\r (no-eol) (esc)
loop [====================> ] 2/4 5h34m\r (no-eol) (esc)
loop [==============================> ] 3/4 2h47m\r (no-eol) (esc)
\r (no-eol) (esc)
Augie Fackler
test-progress: test completion estimates and progress bar delay
r13145
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ MOCKTIME=1000000 hg -y loop 4
\r (no-eol) (esc)
loop [ ] 0/4\r (no-eol) (esc)
loop [=========> ] 1/4 5w00d\r (no-eol) (esc)
loop [====================> ] 2/4 3w03d\r (no-eol) (esc)
loop [=============================> ] 3/4 11d14h\r (no-eol) (esc)
\r (no-eol) (esc)
timeless
progress: handle days, weeks and years...
r13236
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ MOCKTIME=14000000 hg -y loop 4
\r (no-eol) (esc)
loop [ ] 0/4\r (no-eol) (esc)
loop [=========> ] 1/4 1y18w\r (no-eol) (esc)
loop [===================> ] 2/4 46w03d\r (no-eol) (esc)
loop [=============================> ] 3/4 23w02d\r (no-eol) (esc)
\r (no-eol) (esc)
timeless
progress: handle days, weeks and years...
r13236
Augie Fackler
progress: don't compute estimate without a total...
r13154 Time estimates should not fail when there's no end point:
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg -y loop -- -4
\r (no-eol) (esc)
Durham Goode
blackbox: fix recording exit codes (issue3938)...
r19229 loop [ <=> ] 2\r (no-eol) (esc)
loop [ <=> ] 3\r (no-eol) (esc)
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 \r (no-eol) (esc)
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim output line correctly...
r21859
Yuya Nishihara
test-progress: disable mocking-time tests on chg...
r28881 #endif
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim output line correctly...
r21859 test line trimming by '[progress] width', when progress topic contains
multi-byte characters, of which length of byte sequence and columns in
display are different from each other.
$ cp $HGRCPATH.orig $HGRCPATH
$ cat >> $HGRCPATH <<EOF
> [extensions]
> progress=
> loop=`pwd`/loop.py
> [progress]
> assume-tty = 1
> delay = 0
> refresh = 0
> EOF
$ rm -f loop.pyc
$ cat >> loop.py <<EOF
> # use non-ascii characters as topic label of progress
> # 2 x 4 = 8 columns, but 3 x 4 = 12 bytes
> topiclabel = u'\u3042\u3044\u3046\u3048'.encode('utf-8')
> EOF
$ cat >> $HGRCPATH <<EOF
> [progress]
> format = topic number
> width= 12
> EOF
$ hg --encoding utf-8 -y loop --total 3 3
\r (no-eol) (esc)
\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 0/3\r (no-eol) (esc)
\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 1/3\r (no-eol) (esc)
\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 2/3\r (no-eol) (esc)
\r (no-eol) (esc)
FUJIWARA Katsunori
progress: use 'encoding.colwidth' to get column width of output line correctly...
r21860
test calculation of bar width, when progress topic contains multi-byte
characters, of which length of byte sequence and columns in display
are different from each other.
$ cat >> $HGRCPATH <<EOF
> [progress]
> format = topic bar
> width= 21
> # progwidth should be 9 (= 21 - (8+1) - 3)
> EOF
$ hg --encoding utf-8 -y loop --total 3 3
\r (no-eol) (esc)
\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 [ ]\r (no-eol) (esc)
\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 [==> ]\r (no-eol) (esc)
\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88 [=====> ]\r (no-eol) (esc)
\r (no-eol) (esc)
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862
Mads Kiilerich
spelling: fixes from proofreading of spell checker issues
r23139 test trimming progress items, when they contain multi-byte characters,
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 of which length of byte sequence and columns in display are different
from each other.
$ rm -f loop.pyc
$ cat >> loop.py <<EOF
> # use non-ascii characters as loop items of progress
> loopitems = [
FUJIWARA Katsunori
progress: use 'encoding.colwidth' to get column width of items correctly...
r21863 > u'\u3042\u3044'.encode('utf-8'), # 2 x 2 = 4 columns
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 > 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
> ]
> def getloopitem(i):
> return loopitems[i % len(loopitems)]
> EOF
$ cat >> $HGRCPATH <<EOF
> [progress]
> # trim at tail side
> format = item+6
> EOF
FUJIWARA Katsunori
progress: use 'encoding.colwidth' to get column width of items correctly...
r21863 $ hg --encoding utf-8 -y loop --total 3 3
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 \r (no-eol) (esc)
FUJIWARA Katsunori
progress: use 'encoding.colwidth' to get column width of items correctly...
r21863 \xe3\x81\x82\xe3\x81\x84 \r (no-eol) (esc)
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\r (no-eol) (esc)
\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\r (no-eol) (esc)
\r (no-eol) (esc)
$ cat >> $HGRCPATH <<EOF
> [progress]
> # trim at left side
> format = item-6
> EOF
FUJIWARA Katsunori
progress: use 'encoding.colwidth' to get column width of items correctly...
r21863 $ hg --encoding utf-8 -y loop --total 3 3
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 \r (no-eol) (esc)
FUJIWARA Katsunori
progress: use 'encoding.colwidth' to get column width of items correctly...
r21863 \xe3\x81\x82\xe3\x81\x84 \r (no-eol) (esc)
FUJIWARA Katsunori
progress: use 'encoding.trim' to trim items in output line correctly...
r21862 \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\r (no-eol) (esc)
\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\r (no-eol) (esc)
\r (no-eol) (esc)