Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 14:50:04 +0000] rev 28262
chgserver: add utilities to calculate confighash
confighash is the hash of sensitive config items like [extensions], and
sensitive environment variables like HG*, LD_*, etc. The config items
can come from global, user, repo config, and command line flags.
For chgserver, it is designed that once confighash changes, the server is
not qualified to serve its client and should redirect the client to a new
server. The server does not need to exit in this case, since it can still
be valid (have a matched confighash) to serve other chg clients.
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 14:13:12 +0000] rev 28261
chg: detect chg started by chg
Sometimes people may create a symbol link from hg to chg, or write a wrapper
script named hg calling chg. Without $HG and $CHGHG set, this will lead to
chg executes itself causing deadlock. The user will notice chg hangs for some
time and aborts with a timed out message, without knowing the root cause and
how to solve it.
This patch sets a dummy environment variable before executing hg to detect
this situation, and print a fatal message with some possible solutions.
CHGINTERNALMARK is set by chg client to detect the situation that chg is
started by chg. It is temporary and should be dropped to avoid possible
side effects.
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 14:17:59 +0000] rev 28260
chg: fallback to original hg for some unsupported commands or flags
There are some known unsupported commands or flags for chg, such as hg serve -d
and hg foo --time. This patch detects these situations and transparently fall
back to the original hg. So the users won't bother remembering what chg can and
cannot do by themselves.
The current detection is not 100% accurate since we do not have an equivalent
command line parser in C. But it tries not to cause false positives that
prevents people from using chg for legit cases. In the future we may want to
implement a more accurate "unsupported" check server-side.
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:20:06 +0000] rev 28259
testing: add a 'continuous' profile
This gives a good way of letting Hypothesis run until it
finds an error, save that error, and be restarted without it
picking up on the old bug. This lets you run long-running
Hypothesis processes and then perform a manual deduplication
task on the bugs found at the end.
It's not an entirely satisfying way of using this, but anything
much better would require extensive changes to Hypothesis itself.
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:11:30 +0000] rev 28258
testing: allow Hypothesis to enable extensions
This adds support for testing extensions, including both tests
that extensions don't change behaviour and test for specific
commands.
We use the precondition system to determine what commands are
available to us. If we never use any commands enabled by an
extension then that extension is *skippable* and should not
have changed the behaviour of the test. We thus rerun the test
with an environment variable which is designed to turn off the
extension.
David R. MacIver <david@drmaciver.com> [Fri, 26 Feb 2016 17:24:14 +0000] rev 28257
testing: test multiple repositories with Hypothesis
This expands the Hypothesis based stateful testing so that
rather than having a single repository under test, Hypothesis
manages a family of repositories. Some of these are freshly
created, some are clones of others.
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:06:43 +0000] rev 28256
testing: expand Hypothesis tests with branch commands
This builds on the previous work to add Hypothesis based stateful
testing to add branching commands to the model.
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:05:45 +0000] rev 28255
testing: generate tests operations using Hypothesis
The idea of this patch is to expand the use of Hypothesis
within Mercurial to use its concept of "stateful testing".
The result is a test which runs a sequence of operations
against a Mercurial repository. Each operation is given a
set of allowed ways it can fail. Any other non-zero exit
code is a test failure.
At the end, the whole sequence is then reverified by
generating a .t test and testing it again in pure
mode (this is also useful for catching non-determinism
bugs).
This has proven reasonably effective at finding bugs,
and has identified two problems in the shelve extension
already (issue5113 and issue5112).
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 29 Feb 2016 22:52:29 +0900] rev 28254
i18n-ja: synchronized with cb6a952efbf4
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Feb 2016 22:46:07 +0900] rev 28253
log: fix order of revisions filtered by multiple OR options (issue5100)
This is the simplest workaround for the issue of the ordering of revset, which
is that the expression "x or y" takes over the ordering specified by the input
set (or the left-hand-side expression.) For example, the following expression
A & (x | y)
will be evaluated as if
(A & x) | (A & y)
That's wrong because revset has ordering. I'm going to fix this problem in
the revset module, but that wouldn't fit to stable. So, this patch just works
around the common log cases.
Since this change might have some impact on performance, it is enabled only
if the expression built from log options has ' or ' operation.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 25 Feb 2016 22:35:11 -0800] rev 28252
demandimport: add _imp to ignore list
Mozilla is seeing an issue with demand importing of _imp
failing in pkg_resources/__init__.py:fixup_namespace_packages.
It strangely only reproduces when using a modern version of
setuptools/pip in certain scenarios. Adding _imp to the demand import
ignore list seems to make the problem go away.
timeless <timeless@mozdev.org> [Thu, 25 Feb 2016 16:54:14 +0000] rev 28251
tests: rename regression tests
Danek Duvall <danek.duvall@oracle.com> [Thu, 25 Feb 2016 10:01:59 -0800] rev 28250
zeroconf: fix crash in "hg paths" when zeroconf server is up
Running "hg paths" with zeroconf enabled and when a zeroconf server is up
and running gives a traceback with "ValueError: rawloc must be defined".
This is because zeroconf needs to wrap ui.configsuboptions(), introduced in
dccbebcff075.
Danek Duvall <danek.duvall@oracle.com> [Wed, 24 Feb 2016 22:22:18 -0800] rev 28249
zeroconf: fix setsockopt() call on Solaris to send payload of correct length
The zeroconf extension has been broken on Solaris since the beginning, but
no one noticed until the testsuite started poking it after changeset
72f2a19c5f88, when it started running "hg paths" with the extension
enabled.
Solaris requires that, for IP_MULTICAST_{TTL,LOOP}, the argument passed in
be of length 1. With the original code here, it gets passed in as an int
-- length 4 -- and so the system call fails with EINVAL. Thankfully,
Python's socket.setsockopt() allows you to pass in a string instead of an
integer, and it passes that string to libc's setsockopt() with the correct
value and length.