tests: always access the mercurial repo through `helpers-testrepo.sh`
authorArseniy Alekseyev <aalekseyev@janestreet.com>
Wed, 02 Oct 2024 14:51:56 +0100
changeset 51919 ceaf92d6d380
parent 51918 813226b3b4ca
child 51920 ef7d85089952
tests: always access the mercurial repo through `helpers-testrepo.sh` In some contexts the mercurial repo needs to be accessed through system hg. That's what `helpers-testrepo.sh` enforces, but some tests incorrectly use the mercurial repo without going through that script. This patch fixes those tests.
tests/test-check-format.t
tests/test-check-help.t
tests/test-check-interfaces.py
tests/test-doctest.py
--- a/tests/test-check-format.t	Wed Oct 02 14:49:07 2024 +0100
+++ b/tests/test-check-format.t	Wed Oct 02 14:51:56 2024 +0100
@@ -6,6 +6,8 @@
   $ export USERPROFILE
 #endif
 
+  $ . "$TESTDIR/helpers-testrepo.sh"
+
   $ cd $RUNTESTDIR/..
-  $ black --check --diff `hg files 'set:(**.py + grep("^#!.*python")) - mercurial/thirdparty/**'`
+  $ black --check --diff `testrepohg files 'set:(**.py + grep("^#!.*python")) - mercurial/thirdparty/**'`
 
--- a/tests/test-check-help.t	Wed Oct 02 14:49:07 2024 +0100
+++ b/tests/test-check-help.t	Wed Oct 02 14:51:56 2024 +0100
@@ -19,12 +19,11 @@
   >     stdout.write(b'%s\n' % s)
   > EOF
 
-  $ cd "$TESTDIR"/..
-
 Check if ":hg:`help TOPIC`" is valid:
 (use "xargs -n1 -t" to see which help commands are executed)
 
+  $ cd "$TESTDIR"/..
   $ testrepohg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \
   > | sed 's|\\|/|g' \
   > | xargs "$PYTHON" "$TESTTMP/scanhelptopics.py" \
-  > | xargs -n1 hg help --config extensions.phabricator= > /dev/null
+  > | xargs -n1 hg --cwd "$TESTTMP" help --config extensions.phabricator= > /dev/null
--- a/tests/test-check-interfaces.py	Wed Oct 02 14:49:07 2024 +0100
+++ b/tests/test-check-interfaces.py	Wed Oct 02 14:51:56 2024 +0100
@@ -9,12 +9,6 @@
 import subprocess
 import sys
 
-# Only run if tests are run in a repo
-if subprocess.call(
-    [sys.executable, '%s/hghave' % os.environ['TESTDIR'], 'test-repo']
-):
-    sys.exit(80)
-
 from mercurial.interfaces import (
     dirstate as intdirstate,
     repository,
@@ -41,7 +35,6 @@
 )
 
 testdir = os.path.dirname(__file__)
-rootdir = pycompat.fsencode(os.path.normpath(os.path.join(testdir, '..')))
 
 sys.path[0:0] = [testdir]
 import simplestorerepo
@@ -117,6 +110,14 @@
         pass
 
 
+def init_test_repo():
+    testtmp_dir = os.path.normpath(os.environ['TESTTMP'])
+    test_repo_dir = os.path.join(testtmp_dir, "test-repo")
+    subprocess.run(["hg", "init", test_repo_dir])
+    subprocess.run(["hg", "--cwd", test_repo_dir, "debugbuilddag", "+3<3+1"])
+    return test_repo_dir
+
+
 def main():
     ui = uimod.ui()
     # Needed so we can open a local repo with obsstore without a warning.
@@ -168,7 +169,8 @@
     ziverify.verifyClass(
         repository.ilocalrepositoryfilestorage, localrepo.revlogfilestorage
     )
-    repo = localrepo.makelocalrepository(ui, rootdir)
+    test_repo_dir = init_test_repo()
+    repo = localrepo.makelocalrepository(ui, pycompat.fsencode(test_repo_dir))
     checkzobject(repo)
 
     ziverify.verifyClass(
--- a/tests/test-doctest.py	Wed Oct 02 14:49:07 2024 +0100
+++ b/tests/test-doctest.py	Wed Oct 02 14:51:56 2024 +0100
@@ -72,7 +72,8 @@
     sys.exit(0)
 
 files = subprocess.check_output(
-    "hg files --print0 \"%s\"" % fileset,
+    "HGRCPATH=/dev/null . helpers-testrepo.sh; testrepohg files --print0 \"%s\""
+    % fileset,
     shell=True,
     cwd=cwd,
 ).split(b'\0')