mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
run-tests: create a symlink of hg
Summary: run-tests.py creates the `python` symlink. Let's do the same for `hg`. This means tests can just use `hg` and do not worry about it being a wrong one (like, the system hg). And there is no need to create fragile shell alias, or set `ui.remotecmd`. The check to ensure `--with-hg` provides either `hg` or `hg.exe` was removed since it's no longer necessary. Reviewed By: DurhamG Differential Revision: D6879879 fbshipit-source-id: 59255102ea3c4c646afc7900696403242bcfb4db
This commit is contained in:
parent
ae4b932a4e
commit
fbaa53a84a
@ -450,8 +450,6 @@ def parseargs(args, parser):
|
||||
if not (os.path.isfile(options.with_hg) and
|
||||
os.access(options.with_hg, os.X_OK)):
|
||||
parser.error('--with-hg must specify an executable hg script')
|
||||
if os.path.basename(options.with_hg) not in [b'hg', b'hg.exe']:
|
||||
sys.stderr.write('warning: --with-hg should specify an hg script\n')
|
||||
if options.local:
|
||||
testdir = os.path.dirname(_bytespath(canonpath(sys.argv[0])))
|
||||
reporootdir = os.path.dirname(testdir)
|
||||
@ -1378,8 +1376,6 @@ class TTest(Test):
|
||||
|
||||
if self._debug:
|
||||
script.append(b'set -x\n')
|
||||
if self._hgcommand != b'hg':
|
||||
script.append(b'alias hg="%s"\n' % self._hgcommand)
|
||||
if os.getenv('MSYSTEM'):
|
||||
script.append(b'alias pwd="pwd -W"\n')
|
||||
|
||||
@ -2475,7 +2471,8 @@ class TestRunner(object):
|
||||
whg = self.options.with_hg
|
||||
self._bindir = os.path.dirname(os.path.realpath(whg))
|
||||
assert isinstance(self._bindir, bytes)
|
||||
self._hgcommand = os.path.basename(whg)
|
||||
# use full path, since _hgcommand will also be used as ui.remotecmd
|
||||
self._hgcommand = os.path.realpath(whg)
|
||||
self._tmpbindir = os.path.join(self._hgtmp, b'install', b'bin')
|
||||
os.makedirs(self._tmpbindir)
|
||||
|
||||
@ -2488,7 +2485,7 @@ class TestRunner(object):
|
||||
else:
|
||||
self._installdir = os.path.join(self._hgtmp, b"install")
|
||||
self._bindir = os.path.join(self._installdir, b"bin")
|
||||
self._hgcommand = b'hg'
|
||||
self._hgcommand = os.path.join(self._bindir, b'hg')
|
||||
self._tmpbindir = self._bindir
|
||||
self._pythondir = os.path.join(self._installdir, b"lib", b"python")
|
||||
|
||||
@ -2689,6 +2686,8 @@ class TestRunner(object):
|
||||
assert self._installdir
|
||||
self._installchg()
|
||||
|
||||
self._usecorrecthg()
|
||||
|
||||
result = runner.run(suite)
|
||||
|
||||
if result.failures:
|
||||
@ -2805,6 +2804,25 @@ class TestRunner(object):
|
||||
if not self._findprogram(pyexename):
|
||||
print("WARNING: Cannot find %s in search path" % pyexename)
|
||||
|
||||
def _usecorrecthg(self):
|
||||
"""Configure the environment to use the appropriate hg in tests."""
|
||||
if os.path.basename(self._hgcommand) in ('hg', 'hg.exe'):
|
||||
# No correction is needed
|
||||
return
|
||||
if getattr(os, 'symlink', None):
|
||||
tmphgpath = os.path.join(self._tmpbindir, 'hg')
|
||||
vlog("# Symlink %s to %s" % (self._hgcommand, tmphgpath))
|
||||
try:
|
||||
os.symlink(self._hgcommand, tmphgpath)
|
||||
self._createdfiles.append(tmphgpath)
|
||||
except OSError as err:
|
||||
# child processes may race, which is harmless
|
||||
if err.errno != errno.EEXIST:
|
||||
raise
|
||||
else:
|
||||
raise SystemExit('%s could not be put in search path'
|
||||
% self._hgcommand)
|
||||
|
||||
def _installhg(self):
|
||||
"""Install hg into the test environment.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user