# HG changeset patch # User Yuya Nishihara # Date 2017-07-02 04:24:23 # Node ID 45d6e2767a931aefb8052d9aa9ba50343b46290e # Parent 2d7300cf3f3f76ff4183c6deed04632a8cae7584 tests: use system hg only if changelog or dirstate can't be read The bundled hg should work flawlessly in most cases. Make it depend on the external installation only if necessary since we can't control the whole environment. This patch doesn't implement the "exit 80" idea proposed by Jun. I don't want to keep the capability checking sync with the actual tests. diff --git a/tests/helpers-testrepo.sh b/tests/helpers-testrepo.sh --- a/tests/helpers-testrepo.sh +++ b/tests/helpers-testrepo.sh @@ -1,5 +1,6 @@ -# Invoke the system hg installation (rather than the local hg version being -# tested). +# In most cases, the mercurial repository can be read by the bundled hg, but +# that isn't always true because third-party extensions may change the store +# format, for example. In which case, the system hg installation is used. # # We want to use the hg version being tested when interacting with the test # repository, and the system hg when interacting with the mercurial source code @@ -41,11 +42,9 @@ cat >> "$HGRCPATH" << EOF evolution = createmarkers EOF -# Most test-check-* sourcing this file run "hg files", which is not available -# in ancient versions of hg. So we double check if "syshg files" works and -# fallback to hg bundled in the repo. -syshg files -h >/dev/null 2>/dev/null -if [ $? -eq 0 ]; then +# Use the system hg command if the bundled hg can't read the repository with +# no warning nor error. +if [ -n "`hg id -R "$TESTDIR/.." 2>&1 >/dev/null`" ]; then alias testrepohg=syshg alias testrepohgenv=syshgenv else