run-tests: work around the Windows firewall popup for server processes
Windows doesn't have a `python3` executable, so
cc0b332ab9fc attempted to work
around the issue by copying the current python to `python3.exe`. That put it in
`_tmpbindir` because of failures in `test-run-tests.t` when using `_bindir`,
which looked like a process was trying to open it to write out a copy while it
was in use. (Interestingly, I couldn't reproduce this running the test by
itself in a loop for a couple of hours, but it happens constantly when running
all tests.) The problem with using `_tmpbindir` is that it is the randomly
generated path for the test run, and instead of Windows Firewall remembering the
executable signature or image hash when allowing the process to open a server
port, it apparently remembers the image path. That means every run will trigger
a popup to allow it, which is bad for firing off a test run and walking away.
I tried to symlink to the python executable, but that currently requires admin
priviledges[1]. This will prompt the first time if the underlying python binary
has never opened a server port, but appears to avoid it on subsequent runs.
[1] https://bugs.python.org/
issue40687
Differential Revision: https://phab.mercurial-scm.org/D9815
hghave: split apart testing for the curses module and `tic` executable
ef771d329961 skipped the check for the `tic` executable, because the curses
module alone on Windows is enough to pass the `test-*-curses.t` tests. However,
`test-status-color.t` uses this same check and explicitly invoked the
executable, which fails on Windows. From the cursory searching I did, curses on
unix requires `tic`, which I assume is why they were tied together in the first
place. So this continues to require both to get past the curses guards on non
Windows platforms.
Differential Revision: https://phab.mercurial-scm.org/D9814
sqlitestore: disable test with chg
There are known issues with transactions not being closed in a timely
fashion, making the test flakey.
Differential Revision: https://phab.mercurial-scm.org/D9821
heptapod-ci: allow testing with docker image other than :latest
The project have a default config of latest for this variable.
Differential Revision: https://phab.mercurial-scm.org/D9792
persistent-nodemap: also exchange the nodemap data over the wire
It appears that 2 bytes are never equals to 3 bytes.
Differential Revision: https://phab.mercurial-scm.org/D9810
persistent-nodemap: catch the right exception on python
On Python 2, Missing file are IOError, not OSError, apparently.
Differential Revision: https://phab.mercurial-scm.org/D9809
hghave: adjust the definition of `tic` to allow curses tests on Windows
Might as well pick up the test coverage if it works as-is.
Differential Revision: https://phab.mercurial-scm.org/D9808
windows: wrap `os.getcwd()` in `os.path.realpath()` on py3
I noticed various `test-check-*` failures that were printing absolute paths
when repo relative paths were expected. This was due to the drive letter in
`repo.root` being uppercased as it is run through `os.path.realpath()`, and then
the simple string comparison against the (lowercased) `_cwd` member of dirstate
in `dirstate.getcwd()` causing an absolute path to be returned, instead of the
expected `b''`. That in turn causes `scmutil.getuipathfn()` to wrongly use
`repo.pathto()` with an absolute cwd path.
.
Differential Revision: https://phab.mercurial-scm.org/D9806
packaging: include `windows-curses` on Windows
Otherwise the interface degrades to the old hunk selection method on Windows
when `ui.tweakdefaults=1`. I've been using this for a couple of months without
any issues, other than it seems to toggle off edit mode for the terminal when
run through MSYS. Using cmd.exe seems to work fine.
Differential Revision: https://phab.mercurial-scm.org/D9805
cext: fix compiler error in revlog.c on Windows with py2
Visual Studio 2008 doesn't have <stdint.h>, and we worked around it before with
this header.
Differential Revision: https://phab.mercurial-scm.org/D9804