discovery: port _postprocessobsolete() changes from evolve, add tests
Let's make this function obsolescence-aware as well. Now we check that
revisions are not obsolete first, and only then check that they are going to be
common after exchange.
The tests make sure that rewriting changesets doesn't confuse head computation.
They rely on experimental.single-head-per-branch feature to show that remote
correctly sees the expected result (i.e. either aborts the push or allows it to
succeed). They are ported from evolve as well.
Differential Revision: https://phab.mercurial-scm.org/D12098
$ . "$TESTDIR/helpers-testrepo.sh"
Testing that hghave does not crash when checking features
$ hghave --test-features 2>/dev/null
Testing hghave extensibility for third party tools
$ cat > hghaveaddon.py <<EOF
> import hghave
> @hghave.check("custom", "custom hghave feature")
> def has_custom():
> return True
> EOF
(invocation via run-tests.py)
$ cat > test-hghaveaddon.t <<EOF
> #require custom
> $ echo foo
> foo
> EOF
$ ( \
> testrepohgenv; \
> "$PYTHON" $TESTDIR/run-tests.py --with-hg=$HGTEST_REAL_HG -j 1 \
> $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \
> )
running 1 tests using 1 parallel processes
.
# Ran 1 tests, 0 skipped, 0 failed.
(invocation via command line)
$ unset TESTDIR
$ hghave custom
(terminate with exit code 2 at failure of importing hghaveaddon.py)
$ rm hghaveaddon.*
$ cat > hghaveaddon.py <<NO_CHECK_EOF
> importing this file should cause syntax error
> NO_CHECK_EOF
$ hghave custom
failed to import hghaveaddon.py from '.': invalid syntax (hghaveaddon.py, line 1)
[2]