Mercurial > hg
changeset 8672:d6b243731763
run-tests: factor out _checkhglib() to check import path of 'mercurial'.
- rename _hgpath() to _gethgpath() and move it down next to _checkhglib()
- change _gethgpath() so it caches its result: replaces global 'hgpkg'
that anyone can use with global '_hgpath' that is only for _gethgpath()
- no need to pass 'expecthg' to runchildren() or runtests() anymore
Also: do not change global PYTHON when doing coverage; this seems to
be unnecessary, since we create a dummy 'hg' script that handles
coverage for us, and it made things brittle. (E.g. the rest of this
patch makes the call to _hgpath() come later, and it was broken by
enabling coverage.)
author | Greg Ward <greg-hg@gerg.ca> |
---|---|
date | Fri, 29 May 2009 22:18:15 -0400 |
parents | a434c94b48e7 |
children | a8066f2fd1aa |
files | tests/run-tests.py |
diffstat | 1 files changed, 33 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/run-tests.py Fri May 29 22:17:53 2009 -0400 +++ b/tests/run-tests.py Fri May 29 22:18:15 2009 -0400 @@ -205,7 +205,6 @@ shutil.copymode(sys.executable, mypython) def installhg(options): - global PYTHON vlog("# Performing temporary installation of HG") installerrs = os.path.join("tests", "install.err") pure = options.pure and "--pure" or "" @@ -239,8 +238,6 @@ os.environ["PYTHONPATH"] = pythonpath usecorrectpython() - global hgpkg - hgpkg = _hgpath() vlog("# Installing dummy diffstat") f = open(os.path.join(BINDIR, 'diffstat'), 'w') @@ -269,15 +266,6 @@ os.path.join(BINDIR, '_hg.py'))) f.close() os.chmod(os.path.join(BINDIR, 'hg'), 0700) - PYTHON = '"%s" "%s" -x -p' % (sys.executable, - os.path.join(TESTDIR, 'coverage.py')) - -def _hgpath(): - cmd = '%s -c "import mercurial; print mercurial.__path__[0]"' - hgpath = os.popen(cmd % PYTHON) - path = hgpath.read().strip() - hgpath.close() - return path def outputcoverage(options): @@ -496,11 +484,35 @@ return None return ret == 0 -def runchildren(options, expecthg, tests): +_hgpath = None + +def _gethgpath(): + """Return the path to the mercurial package that is actually found by + the current Python interpreter.""" + global _hgpath + if _hgpath is not None: + return _hgpath + + cmd = '%s -c "import mercurial; print mercurial.__path__[0]"' + pipe = os.popen(cmd % PYTHON) + try: + _hgpath = pipe.read().strip() + finally: + pipe.close() + return _hgpath + +def _checkhglib(verb): + """Ensure that the 'mercurial' package imported by python is + the one we expect it to be. If not, print a message to stdout.""" + expecthg = os.path.join(HGTMP, 'install', 'lib', 'python', 'mercurial') + actualhg = _gethgpath() + if actualhg != expecthg: + print '# %s unexpected mercurial: %s' % (verb, actualhg) + +def runchildren(options, tests): if not options.with_hg: installhg(options) - if hgpkg != expecthg: - print '# Testing unexpected mercurial: %s' % hgpkg + _checkhglib("Testing") optcopy = dict(options.__dict__) optcopy['jobs'] = 1 @@ -554,13 +566,12 @@ for s in fails: print "Failed %s: %s" % (s[0], s[1]) - if hgpkg != expecthg: - print '# Tested unexpected mercurial: %s' % hgpkg + _checkhglib("Tested") print "# Ran %d tests, %d skipped, %d failed." % ( tested, skipped, failed) sys.exit(failures != 0) -def runtests(options, expecthg, tests): +def runtests(options, tests): global DAEMON_PIDS, HGRCPATH DAEMON_PIDS = os.environ["DAEMON_PIDS"] = os.path.join(HGTMP, 'daemon.pids') HGRCPATH = os.environ["HGRCPATH"] = os.path.join(HGTMP, '.hgrc') @@ -568,9 +579,7 @@ try: if not options.with_hg: installhg(options) - - if hgpkg != expecthg: - print '# Testing unexpected mercurial: %s' % hgpkg + _checkhglib("Testing") if options.timeout > 0: try: @@ -632,8 +641,7 @@ print "Skipped %s: %s" % s for s in fails: print "Failed %s: %s" % s - if hgpkg != expecthg: - print '# Tested unexpected mercurial: %s' % hgpkg + _checkhglib("Tested") print "# Ran %d tests, %d skipped, %d failed." % ( tested, skipped, failed) @@ -684,8 +692,6 @@ PYTHONDIR = os.path.join(INST, "lib", "python") COVERAGE_FILE = os.path.join(TESTDIR, ".coverage") - expecthg = os.path.join(HGTMP, 'install', 'lib', 'python', 'mercurial') - if len(args) == 0: args = os.listdir(".") args.sort() @@ -705,9 +711,9 @@ try: if len(tests) > 1 and options.jobs > 1: - runchildren(options, expecthg, tests) + runchildren(options, tests) else: - runtests(options, expecthg, tests) + runtests(options, tests) finally: cleanup(options)