Mercurial > hg > mercurial-source
changeset 41789:87c98ffbc8c7
py3: use bytes stdout in hghave.py
This fixes a failure in test-run-tests.t around notarealhghavefeature. It seems
crazy to me that all of this needs to be adjusted in all of these tests, but the
line as run-tests.py sees it in _processoutput() before doing anything is
already mangled with a trailing '\r'. Switching to normalizenewlines=True for
TTest works, but I'm sure that breaks other stuff.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Wed, 19 Dec 2018 14:51:21 -0500 |
parents | e88ced97151d |
children | e10641c48fa7 |
files | tests/hghave.py |
diffstat | 1 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/hghave.py +++ b/tests/hghave.py @@ -16,6 +16,16 @@ "false": (lambda: False, "nail clipper"), } +try: + import msvcrt + msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) + msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) +except ImportError: + pass + +stdout = getattr(sys.stdout, 'buffer', sys.stdout) +stderr = getattr(sys.stderr, 'buffer', sys.stderr) + if sys.version_info[0] >= 3: def _bytespath(p): if p is None: @@ -90,11 +100,12 @@ result = checkfeatures(features) for missing in result['missing']: - sys.stderr.write('skipped: unknown feature: %s\n' % missing) + stderr.write(('skipped: unknown feature: %s\n' + % missing).encode('utf-8')) for msg in result['skipped']: - sys.stderr.write('skipped: %s\n' % msg) + stderr.write(('skipped: %s\n' % msg).encode('utf-8')) for msg in result['error']: - sys.stderr.write('%s\n' % msg) + stderr.write(('%s\n' % msg).encode('utf-8')) if result['missing']: sys.exit(2)