diff --git a/tests/helpers-testrepo.sh b/tests/helpers-testrepo.sh
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvaGVscGVycy10ZXN0cmVwby5zaA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvaGVscGVycy10ZXN0cmVwby5zaA== 100644
--- a/tests/helpers-testrepo.sh
+++ b/tests/helpers-testrepo.sh
@@ -27,11 +27,10 @@
 # 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 [ $? -ne 0 ]; then
-    syshg() {
-        hg "$@"
-    }
-    syshgenv() {
-        :
-    }
+if [ $? -eq 0 ]; then
+    alias testrepohg=syshg
+    alias testrepohgenv=syshgenv
+else
+    alias testrepohg=hg
+    alias testrepohgenv=:
 fi
diff --git a/tests/test-check-code.t b/tests/test-check-code.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1jb2RlLnQ=..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1jb2RlLnQ= 100644
--- a/tests/test-check-code.t
+++ b/tests/test-check-code.t
@@ -7,7 +7,8 @@
 New errors are not allowed. Warnings are strongly discouraged.
 (The writing "no-che?k-code" is for not skipping this file when checking.)
 
-  $ syshg locate -X contrib/python-zstandard -X hgext/fsmonitor/pywatchman |
+  $ testrepohg locate -X contrib/python-zstandard \
+  > -X hgext/fsmonitor/pywatchman |
   > sed 's-\\-/-g' | "$check_code" --warnings --per-file=0 - || false
   Skipping i18n/polib.py it has no-che?k-code (glob)
   Skipping mercurial/httpclient/__init__.py it has no-che?k-code (glob)
@@ -33,7 +34,7 @@
 
 Prevent adding new files in the root directory accidentally.
 
-  $ syshg files 'glob:*'
+  $ testrepohg files 'glob:*'
   .editorconfig
   .hgignore
   .hgsigs
diff --git a/tests/test-check-commit.t b/tests/test-check-commit.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1jb21taXQudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1jb21taXQudA== 100644
--- a/tests/test-check-commit.t
+++ b/tests/test-check-commit.t
@@ -8,8 +8,9 @@
 
   $ cd $TESTDIR/..
 
-  $ for node in `syshg log --rev 'not public() and ::. and not desc("# no-check-commit")' --template '{node|short}\n'`; do
-  >    syshg export --git $node | contrib/check-commit > ${TESTTMP}/check-commit.out
+  $ for node in `testrepohg log --rev 'not public() and ::. and not desc("# no-check-commit")' --template '{node|short}\n'`; do
+  >    testrepohg export --git $node \
+  >        | contrib/check-commit > ${TESTTMP}/check-commit.out
   >    if [ $? -ne 0 ]; then
   >        echo "Revision $node does not comply with rules"
   >        echo '------------------------------------------------------'
diff --git a/tests/test-check-config.t b/tests/test-check-config.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1jb25maWcudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1jb25maWcudA== 100644
--- a/tests/test-check-config.t
+++ b/tests/test-check-config.t
@@ -43,5 +43,5 @@
 
 New errors are not allowed. Warnings are strongly discouraged.
 
-  $ syshg files "set:(**.py or **.txt) - tests/**" | sed 's|\\|/|g' |
+  $ testrepohg files "set:(**.py or **.txt) - tests/**" | sed 's|\\|/|g' |
   >   $PYTHON contrib/check-config.py
diff --git a/tests/test-check-execute.t b/tests/test-check-execute.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1leGVjdXRlLnQ=..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1leGVjdXRlLnQ= 100644
--- a/tests/test-check-execute.t
+++ b/tests/test-check-execute.t
@@ -5,8 +5,8 @@
 
 look for python scripts without the execute bit
 
-  $ syshg files 'set:**.py and not exec() and grep(r"^#!.*?python")'
+  $ testrepohg files 'set:**.py and not exec() and grep(r"^#!.*?python")'
   [1]
 
 look for python scripts with execute bit but not shebang
 
@@ -9,9 +9,9 @@
   [1]
 
 look for python scripts with execute bit but not shebang
 
-  $ syshg files 'set:**.py and exec() and not grep(r"^#!.*?python")'
+  $ testrepohg files 'set:**.py and exec() and not grep(r"^#!.*?python")'
   [1]
 
 look for shell scripts with execute bit but not shebang
 
@@ -14,9 +14,9 @@
   [1]
 
 look for shell scripts with execute bit but not shebang
 
-  $ syshg files 'set:**.sh and exec() and not grep(r"^#!.*(ba)?sh")'
+  $ testrepohg files 'set:**.sh and exec() and not grep(r"^#!.*(ba)?sh")'
   [1]
 
 look for non scripts with no shebang
 
@@ -19,6 +19,6 @@
   [1]
 
 look for non scripts with no shebang
 
-  $ syshg files 'set:exec() and not **.sh and not **.py and not grep(r"^#!")'
+  $ testrepohg files 'set:exec() and not **.sh and not **.py and not grep(r"^#!")'
   [1]
diff --git a/tests/test-check-help.t b/tests/test-check-help.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1oZWxwLnQ=..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1oZWxwLnQ= 100644
--- a/tests/test-check-help.t
+++ b/tests/test-check-help.t
@@ -23,7 +23,7 @@
 Check if ":hg:`help TOPIC`" is valid:
 (use "xargs -n1 -t" to see which help commands are executed)
 
-  $ syshg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \
+  $ testrepohg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \
   > | sed 's|\\|/|g' \
   > | xargs $PYTHON "$TESTTMP/scanhelptopics.py" \
   > | xargs -n1 hg help > /dev/null
diff --git a/tests/test-check-module-imports.t b/tests/test-check-module-imports.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1tb2R1bGUtaW1wb3J0cy50..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1tb2R1bGUtaW1wb3J0cy50 100644
--- a/tests/test-check-module-imports.t
+++ b/tests/test-check-module-imports.t
@@ -14,7 +14,7 @@
 Known-bad files are excluded by -X as some of them would produce unstable
 outputs, which should be fixed later.
 
-  $ syshg locate 'set:**.py or grep(r"^#!.*?python")' \
+  $ testrepohg locate 'set:**.py or grep(r"^#!.*?python")' \
   > 'tests/**.t' \
   > -X contrib/debugshell.py \
   > -X contrib/python-zstandard/ \
diff --git a/tests/test-check-py3-compat.t b/tests/test-check-py3-compat.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1weTMtY29tcGF0LnQ=..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1weTMtY29tcGF0LnQ= 100644
--- a/tests/test-check-py3-compat.t
+++ b/tests/test-check-py3-compat.t
@@ -3,7 +3,8 @@
   $ . "$TESTDIR/helpers-testrepo.sh"
   $ cd "$TESTDIR"/..
 
-  $ syshg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON contrib/check-py3-compat.py
+  $ testrepohg files 'set:(**.py)' | sed 's|\\|/|g' \
+  > | xargs $PYTHON contrib/check-py3-compat.py
   contrib/python-zstandard/setup.py not using absolute_import
   contrib/python-zstandard/setup_zstd.py not using absolute_import
   contrib/python-zstandard/tests/common.py not using absolute_import
@@ -22,7 +23,8 @@
   tests/test-demandimport.py not using absolute_import
 
 #if py3exe
-  $ syshg files 'set:(**.py) - grep(pygments)' -X hgext/fsmonitor/pywatchman \
+  $ testrepohg files 'set:(**.py) - grep(pygments)' \
+  > -X hgext/fsmonitor/pywatchman \
   > | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py \
   > | sed 's/[0-9][0-9]*)$/*)/'
   hgext/convert/transport.py: error importing: <*Error> No module named 'svn.client' (error at transport.py:*) (glob)
@@ -38,7 +40,7 @@
 #endif
 
 #if py3exe py3pygments
-  $ syshg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \
+  $ testrepohg files 'set:(**.py) and grep(pygments)' | sed 's|\\|/|g' \
   > | xargs $PYTHON3 contrib/check-py3-compat.py \
   > | sed 's/[0-9][0-9]*)$/*)/'
 #endif
diff --git a/tests/test-check-pyflakes.t b/tests/test-check-pyflakes.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1weWZsYWtlcy50..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1weWZsYWtlcy50 100644
--- a/tests/test-check-pyflakes.t
+++ b/tests/test-check-pyflakes.t
@@ -6,7 +6,7 @@
 run pyflakes on all tracked files ending in .py or without a file ending
 (skipping binary file random-seed)
 
-  $ syshg locate 'set:**.py or grep("^#!.*python")' \
+  $ testrepohg locate 'set:**.py or grep("^#!.*python")' \
   > -X hgext/fsmonitor/pywatchman \
   > -X mercurial/pycompat.py -X contrib/python-zstandard \
   > 2>/dev/null \
diff --git a/tests/test-check-shbang.t b/tests/test-check-shbang.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jaGVjay1zaGJhbmcudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jaGVjay1zaGJhbmcudA== 100644
--- a/tests/test-check-shbang.t
+++ b/tests/test-check-shbang.t
@@ -5,7 +5,7 @@
 
 look for python scripts that do not use /usr/bin/env
 
-  $ syshg files 'set:grep(r"^#!.*?python") and not grep(r"^#!/usr/bi{1}n/env python") - **/*.t'
+  $ testrepohg files 'set:grep(r"^#!.*?python") and not grep(r"^#!/usr/bi{1}n/env python") - **/*.t'
   [1]
 
 In tests, enforce $PYTHON and *not* /usr/bin/env python or similar:
@@ -9,7 +9,7 @@
   [1]
 
 In tests, enforce $PYTHON and *not* /usr/bin/env python or similar:
-  $ syshg files 'set:grep(r"#!.*?python") and **/*.t' \
+  $ testrepohg files 'set:grep(r"#!.*?python") and **/*.t' \
   > -X tests/test-check-execute.t \
   > -X tests/test-check-module-imports.t \
   > -X tests/test-check-pyflakes.t \
@@ -21,5 +21,5 @@
 
 look for shell scripts that do not use /bin/sh
 
-  $ syshg files 'set:grep(r"^#!.*/bi{1}n/sh") and not grep(r"^#!/bi{1}n/sh")'
+  $ testrepohg files 'set:grep(r"^#!.*/bi{1}n/sh") and not grep(r"^#!/bi{1}n/sh")'
   [1]
diff --git a/tests/test-contrib-perf.t b/tests/test-contrib-perf.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1jb250cmliLXBlcmYudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1jb250cmliLXBlcmYudA== 100644
--- a/tests/test-contrib-perf.t
+++ b/tests/test-contrib-perf.t
@@ -170,6 +170,6 @@
 
   $ cd "$TESTDIR/.."
 
-  $ (syshg files -r 1.2 glob:mercurial/*.c glob:mercurial/*.py;
-  >  syshg files -r tip glob:mercurial/*.c glob:mercurial/*.py) |
+  $ (testrepohg files -r 1.2 glob:mercurial/*.c glob:mercurial/*.py;
+  >  testrepohg files -r tip glob:mercurial/*.c glob:mercurial/*.py) |
   > "$TESTDIR"/check-perf-code.py contrib/perf.py
diff --git a/tests/test-debian-packages.t b/tests/test-debian-packages.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1kZWJpYW4tcGFja2FnZXMudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1kZWJpYW4tcGFja2FnZXMudA== 100644
--- a/tests/test-debian-packages.t
+++ b/tests/test-debian-packages.t
@@ -1,7 +1,7 @@
 #require test-repo slow debhelper
 
   $ . "$TESTDIR/helpers-testrepo.sh"
-  $ syshgenv
+  $ testrepohgenv
 
 Ensure debuild doesn't run the testsuite, as that could get silly.
   $ DEB_BUILD_OPTIONS=nocheck
diff --git a/tests/test-docker-packaging.t b/tests/test-docker-packaging.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1kb2NrZXItcGFja2FnaW5nLnQ=..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1kb2NrZXItcGFja2FnaW5nLnQ= 100644
--- a/tests/test-docker-packaging.t
+++ b/tests/test-docker-packaging.t
@@ -1,7 +1,7 @@
 #require test-repo slow docker
 
   $ . "$TESTDIR/helpers-testrepo.sh"
-  $ syshgenv
+  $ testrepohgenv
 
 Ensure debuild doesn't run the testsuite, as that could get silly.
   $ DEB_BUILD_OPTIONS=nocheck
diff --git a/tests/test-hghave.t b/tests/test-hghave.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1oZ2hhdmUudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1oZ2hhdmUudA== 100644
--- a/tests/test-hghave.t
+++ b/tests/test-hghave.t
@@ -21,7 +21,7 @@
   >   foo
   > EOF
   $ ( \
-  > syshgenv; \
+  > testrepohgenv; \
   > $TESTDIR/run-tests.py $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t \
   > )
   .
diff --git a/tests/test-imports-checker.t b/tests/test-imports-checker.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1pbXBvcnRzLWNoZWNrZXIudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1pbXBvcnRzLWNoZWNrZXIudA== 100644
--- a/tests/test-imports-checker.t
+++ b/tests/test-imports-checker.t
@@ -1,7 +1,7 @@
 #require test-repo
 
   $ . "$TESTDIR/helpers-testrepo.sh"
-  $ syshgenv
+  $ testrepohgenv
   $ import_checker="$TESTDIR"/../contrib/import-checker.py
 
 Run the doctests from the import checker, and make sure
diff --git a/tests/test-install.t b/tests/test-install.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1pbnN0YWxsLnQ=..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1pbnN0YWxsLnQ= 100644
--- a/tests/test-install.t
+++ b/tests/test-install.t
@@ -159,7 +159,7 @@
   >     print('  %s' % f)
   > EOF
 
-  $ (syshgenv; $PYTHON wixxml.py help )
+  $ ( testrepohgenv; $PYTHON wixxml.py help )
   Not installed:
     help/common.txt
     help/hg-ssh.8.txt
@@ -168,7 +168,7 @@
     help/hgrc.5.txt
   Not tracked:
 
-  $ ( syshgenv; $PYTHON wixxml.py templates )
+  $ ( testrepohgenv; $PYTHON wixxml.py templates )
   Not installed:
   Not tracked:
 
diff --git a/tests/test-mac-packages.t b/tests/test-mac-packages.t
index cf826b9e9ea4b1fb4efca3356cbe5ef6a0ccbda6_dGVzdHMvdGVzdC1tYWMtcGFja2FnZXMudA==..ddd65b4f3ae676e4ebcb8a57090ba36c40174ab6_dGVzdHMvdGVzdC1tYWMtcGFja2FnZXMudA== 100644
--- a/tests/test-mac-packages.t
+++ b/tests/test-mac-packages.t
@@ -1,7 +1,7 @@
 #require test-repo slow osx osxpackaging
 
   $ . "$TESTDIR/helpers-testrepo.sh"
-  $ syshgenv
+  $ testrepohgenv
 
   $ OUTPUTDIR="`pwd`"
   $ export OUTPUTDIR