run-test: install rhg if --rhg is passed
Before this, --rhg was only working with --local.
Differential Revision: https://phab.mercurial-scm.org/D10195
--- a/tests/run-tests.py Wed Mar 10 13:54:13 2021 +0100
+++ b/tests/run-tests.py Wed Mar 10 13:54:46 2021 +0100
@@ -3389,6 +3389,9 @@
if self.options.chg:
assert self._installdir
self._installchg()
+ if self.options.rhg:
+ assert self._installdir
+ self._installrhg()
log(
'running %d tests using %d parallel processes'
@@ -3750,6 +3753,33 @@
sys.stdout.write(out)
sys.exit(1)
+ def _installrhg(self):
+ """Install rhg into the test environment"""
+ vlog('# Performing temporary installation of rhg')
+ assert os.path.dirname(self._bindir) == self._installdir
+ assert self._hgroot, 'must be called after _installhg()'
+ cmd = b'"%(make)s" install-rhg PREFIX="%(prefix)s"' % {
+ b'make': b'make', # TODO: switch by option or environment?
+ b'prefix': self._installdir,
+ }
+ cwd = self._hgroot
+ vlog("# Running", cmd)
+ proc = subprocess.Popen(
+ cmd,
+ shell=True,
+ cwd=cwd,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT,
+ )
+ out, _err = proc.communicate()
+ if proc.returncode != 0:
+ if PYTHON3:
+ sys.stdout.buffer.write(out)
+ else:
+ sys.stdout.write(out)
+ sys.exit(1)
+
def _outputcoverage(self):
"""Produce code coverage output."""
import coverage