Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Dec 2018 17:42:45 -0500] rev 40989
py3: enable legacy stdio mode in exewrapper
This drops the test failure count from 166 to 117. The failures were typically
in the form of `hg serve -d` spawning but crashing immediately, leaving clients
with "bad http status" lines, connection refusals, and so forth. The underlying
message on the server side was either "OSError: [WinError 6] The handle is
invalid" or "OSError: [WinError 1] Incorrect function". Additionally, no output
was rendered if the pager was activated. Thanks to Yuya for diagnosing the
problem.
The failure count drops to 107 when PYTHONLEGACYWINDOWSSTDIO=1 is defined in the
environment. These failures seem to revolve around the dummyssh server process,
and dumbhttp.py. So I'll probably add that to the test runner.
One small regression here (only in py3) is that if hg.exe is already built, a
messagebox appears when building it again saying that python37.dll can't be
loaded. Python3 isn't in PATH by default, and setup.py tries running bare `hg`
first. But MSYS prepends '.' to PATH, so it runs the local hg, but can't find
the library. It falls back to the python used to invoke setup.py, so ultimately
it works. I'm not sure if it's better to strip '.' from PATH or just skip right
to `sys.executable hg` on Windows.
Also, something seems to be wrong with run-tests._usecorrectpython(). I
accidentially left off the 'PYTHON="py -3"' when building (thus making py2
stuff), and yet managed to invoke run-tests.py with "py -3". (And that only had
67 failures.)
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Dec 2018 17:36:51 -0500] rev 40988
run-tests: alias hg to hg.exe on Windows
To enable legacy stdio mode on Windows, hg.exe needs to be updated. But before
that, we actually have to use it when running the tests. I *think* what was
happening before was when MSYS invoked `hg`, it looked at the shbang line and
ran python.exe found there. The test harness must be updating $PATH to include
the python used to launch it, and therefore it ran py3. As a side note, this
also fixed `py -3 run-tests.py` (without --local), which complained about the
space in the shbang line before this.
This should also help in WSL, because the explicit '.exe' is needed to invoke a
Windows app instead of invoking the Linux app.
I have no idea why this change capitalizes Lib in the tests, as it was
previously lowercase for both py2 and py3.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Dec 2018 15:47:08 -0500] rev 40987
py3: conditionalize the python version in test-install.t
Boris Feld <boris.feld@octobus.net> [Sun, 16 Dec 2018 18:51:48 +0000] rev 40986
tests: followup on network related errors on Debian 9
First, update test-clonebundles.t which was failing since the introduction of
the `$EADDRNOTAVAIL$` common pattern.
Also update two tests from 8695fbe17f7c with a more compact condition line.
Differential Revision: https://phab.mercurial-scm.org/D5445
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Dec 2018 17:55:08 +0900] rev 40985
py3: unimplement RevlogError.__str__()
On Python 2, str(exc) would crash if __str__() returned a unicode containing
non-ASCII characters.
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Dec 2018 17:53:17 +0900] rev 40984
py3: use forcebytestr() to stringify hook exception
This fixes test-narrow-exchange.t.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 15 Dec 2018 23:14:03 -0500] rev 40983
color: fix a documentation typo