share: add --relative flag to store a relative path to the source
Storing a relative path the source repository is useful when exporting
repositories over the network or when they're located on external
drives where the mountpoint isn't always fixed.
Currently, Mercurial interprets paths in `.hg/shared` relative to
$PWD. I suspect this is very much unintentional, and you have to
manually edit `.hg/shared` in order to trigger this behaviour.
However, on the off chance that someone might rely on it, I added a
new capability called 'relshared'. In addition, this makes earlier
versions of Mercurial fail with a graceful error.
I should note that I haven't tested this patch on Windows.
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]