Mercurial > hg
view tests/test-check-code.t @ 39037:ede768cfe83e
mail: always fall back to iso-8859-1 if us-ascii won't work (BC)
It looks like this was a well-intentioned backwards compat hack for
previewing the output of `hg email` in a stable way. Unfortunately I
think this hack's time has come, because Python 3 does a much better
job of ensuring it actually emits *valid* email messages. In
particular, Python 2 would blindly trust us that the bytes we handed
it were valid for the encoding we claimed, but Python 3 has some more
sniff-tests that we end up failing.
As a result, if we're going to print an email to the terminal, try
us-ascii first, but if that fails go straight to iso-8859-1 which
should be reasonably readable for ascii-compatible patch bodies. This
*will* be a breaking change for ascii-incompatible textual patch
content, but I don't think that's avoidable if we want to continue
using the email library from the stdlib.
.. bc::
Emails from the patchbomb extension will always be printed as though
they are iso-8859-1 if they're not valid us-ascii. Previously,
previewed emails were always claimed to be us-ascii and might
contain invalid byte sequences.
Differential Revision: https://phab.mercurial-scm.org/D4231
author | Augie Fackler <augie@google.com> |
---|---|
date | Thu, 09 Aug 2018 21:04:15 -0400 |
parents | 1ec874717d8a |
children | 850fe0b9c0c0 |
line wrap: on
line source
#require test-repo $ . "$TESTDIR/helpers-testrepo.sh" $ check_code="$TESTDIR"/../contrib/check-code.py $ cd "$TESTDIR"/.. New errors are not allowed. Warnings are strongly discouraged. (The writing "no-che?k-code" is for not skipping this file when checking.) $ testrepohg locate \ > -X contrib/python-zstandard \ > -X hgext/fsmonitor/pywatchman \ > -X mercurial/thirdparty \ > | sed 's-\\-/-g' | "$check_code" --warnings --per-file=0 - || false Skipping i18n/polib.py it has no-che?k-code (glob) Skipping mercurial/statprof.py it has no-che?k-code (glob) Skipping tests/badserverext.py it has no-che?k-code (glob) @commands in debugcommands.py should be in alphabetical order. >>> import re >>> commands = [] >>> with open('mercurial/debugcommands.py', 'rb') as fh: ... for line in fh: ... m = re.match("^@command\('([a-z]+)", line) ... if m: ... commands.append(m.group(1)) >>> scommands = list(sorted(commands)) >>> for i, command in enumerate(scommands): ... if command != commands[i]: ... print('commands in debugcommands.py not sorted; first differing ' ... 'command is %s; expected %s' % (commands[i], command)) ... break Prevent adding new files in the root directory accidentally. $ testrepohg files 'glob:*' .arcconfig .clang-format .editorconfig .hgignore .hgsigs .hgtags .jshintrc CONTRIBUTING CONTRIBUTORS COPYING Makefile README.rst hg hgeditor hgweb.cgi setup.py Prevent adding modules which could be shadowed by ancient .so/.dylib. $ testrepohg files \ > mercurial/base85.py \ > mercurial/bdiff.py \ > mercurial/diffhelpers.py \ > mercurial/mpatch.py \ > mercurial/osutil.py \ > mercurial/parsers.py \ > mercurial/zstd.py [1]