changeset 33989:45d6e2767a93

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.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 02 Jul 2017 13:24:23 +0900
parents 2d7300cf3f3f
children 895ecec31c70
files tests/helpers-testrepo.sh
diffstat 1 files changed, 6 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 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