--- a/tests/run-tests.py Fri Jan 24 23:14:54 2025 +0100
+++ b/tests/run-tests.py Sat Jan 25 23:49:24 2025 +0100
@@ -54,6 +54,7 @@
import json
import multiprocessing
import os
+import pathlib
import platform
import queue
import random
@@ -72,7 +73,6 @@
import uuid
import xml.dom.minidom as minidom
-
# Don't compare sys.version_info directly, to prevent pyupgrade from dropping
# the conditional.
sys_version_info = sys.version_info
@@ -760,8 +760,25 @@
)
path_local_hg = os.path.join(reporootdir, venv_local, BINDIRNAME, b"hg")
if not os.path.exists(path_local_hg):
- # no local environment but we can still use ./hg to please test-run-tests.t
- path_local_hg = os.path.join(reporootdir, b"hg")
+ if "HGTEST_REAL_HG" in os.environ:
+ # this file is run from a test (typically test-run-tests.t)
+ # no local environment but we can still use ./hg to please test-run-tests.t
+ path_local_hg = os.path.join(reporootdir, b"hg")
+ else:
+ message = (
+ f"run-tests.py called with --local but {_bytes2sys(venv_local)} does not exist.\n"
+ f'To create it, run \nmake local PYTHON="{sys.executable}"'
+ )
+ paths_venv = sorted(
+ pathlib.Path(_bytes2sys(reporootdir)).glob(".venv_*")
+ )
+ if paths_venv:
+ message += (
+ "\nAlternatively, call run-tests.py with a Python "
+ f"corresponding to {[p.name for p in paths_venv]}."
+ )
+ print(message, file=sys.stderr)
+ sys.exit(1)
pathandattrs = [(path_local_hg, 'with_hg')]
if options.chg: