Mercurial > public > mercurial-scm > hg-stable
changeset 52543:20690cff1bd8
run-test: check that the "hg" binary and "python" agree on mercurial path
This is a variation of the other "warning" that might supersede it in the
future.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 12 Dec 2024 15:17:44 +0000 |
parents | d63ab79ed01d |
children | 700086cf336d |
files | tests/run-tests.py |
diffstat | 1 files changed, 34 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/run-tests.py Thu Dec 12 15:06:48 2024 +0000 +++ b/tests/run-tests.py Thu Dec 12 15:17:44 2024 +0000 @@ -4084,7 +4084,18 @@ # We cannot expect anything sensible here. return expecthg = os.path.join(self._pythondir, b'mercurial') + actual_bin_hg = self._get_hg_bin_path() actual_py_hg = self._get_hg_py_path() + if actual_bin_hg != actual_py_hg: + msg = ( + b'fatal: "python" and "hg" disagree about mercurial lib path:\n' + b' hg: %s:\n' + b' py: %s:\n' + ) + msg %= (actual_bin_hg, actual_py_hg) + msg = colorize(msg.decode(), "red", self.options.color) + sys.stderr.write(msg) + sys.exit(2) if os.path.abspath(actual_py_hg) != os.path.abspath(expecthg): msg = ( 'warning: %s with unexpected mercurial lib: %s\n' @@ -4130,6 +4141,29 @@ sys.exit(4) return out + def _get_hg_bin_path(self): + """return the path to the mercurial lib according to the "hg" binary""" + cmd = [ + self._real_hg, + "debuginstall", + "--template", + "{hgmodules}", + ] + p = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + out, err = p.communicate() + if p.returncode != 0: + msg = "fatal: fetching library from `hg` failed:\n" + msg = colorize(msg, "red", self.options.color) + sys.stderr.write(msg) + cmd_err = colorize(err.decode(), "yellow", self.options.color) + sys.stderr.write(cmd_err) + sys.exit(4) + return out + def _get_hg_py_path(self): """Return the path to the mercurial package that is actually found by the current Python interpreter."""