Mercurial > hg
view tests/test-check-help.t @ 43325:7d4f2e4899c5 stable
py3: fix headencode() with display=False
We previously called str() on a email.header.Header object. On Python 2,
this returns a bytestring and the __str__ method is actually an alias to
.encode() method. On Python 3, __str__ does not perform encoding (and
returns a unicode string). To keep a consistent behavior across Python
versions, we explicitly use .encode() and we wrap the result with
encoding.strtolocal() to get a bytestring in all cases. As a side effect
of forcing bytes conversion, we need to decode back in _addressencode().
This is to make test-notify.t pass on Python 3.
Also note that headers are now encoded in some patchbomb tests; this is
because the charset is not always "us-ascii" ("iso-8859-1" otherwise) on
Python 3.
author | Denis Laxalde <denis.laxalde@logilab.fr> |
---|---|
date | Thu, 24 Oct 2019 17:16:43 +0200 |
parents | b6c610bf567e |
children | 42d2b31cee0b |
line wrap: on
line source
#require test-repo $ . "$TESTDIR/helpers-testrepo.sh" $ cat <<'EOF' > scanhelptopics.py > from __future__ import absolute_import, print_function > import re > import sys > if sys.platform == "win32": > import msvcrt > import os > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) > stdout = getattr(sys.stdout, 'buffer', sys.stdout) > topics = set() > topicre = re.compile(br':hg:`help ([a-z0-9\-.]+)`') > for fname in sys.argv: > with open(fname, 'rb') as f: > topics.update(m.group(1) for m in topicre.finditer(f.read())) > for s in sorted(topics): > stdout.write(b'%s\n' % s) > EOF $ cd "$TESTDIR"/.. Check if ":hg:`help TOPIC`" is valid: (use "xargs -n1 -t" to see which help commands are executed) $ testrepohg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \ > | sed 's|\\|/|g' \ > | xargs "$PYTHON" "$TESTTMP/scanhelptopics.py" \ > | xargs -n1 hg help --config extensions.phabricator= > /dev/null