rebase: properly abort when destination is public (issue4896)
After rebasing a set of changes onto a public changeset and having the first one
be skipped, if you try to abort, the operation fails. This fix adds a check to
disallow the target rev into the dstates list within the abort function. This
list is checked for immutable states before the rest of abort does its thing.
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
$ run-tests.py $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t
.
# Ran 1 tests, 0 skipped, 0 warned, 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 <<EOF
> importing this file should cause syntax error
> EOF
$ hghave custom
failed to import hghaveaddon.py from '.': invalid syntax (hghaveaddon.py, line 1)
[2]