Mercurial > hg
changeset 21349:2d767c7c3df0
run-tests: add options to runner
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 19 Apr 2014 23:33:44 -0700 |
parents | b3399154505f |
children | dfcef61f5bd4 |
files | tests/run-tests.py |
diffstat | 1 files changed, 42 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/run-tests.py Sat Apr 19 23:28:59 2014 -0700 +++ b/tests/run-tests.py Sat Apr 19 23:33:44 2014 -0700 @@ -388,15 +388,17 @@ return killmod.killdaemons(pidfile, tryhard=False, remove=True, logfn=vlog) -def cleanup(runner, options): - if not options.keep_tmpdir: - vlog("# Cleaning up HGTMP", runner.hgtmp) - shutil.rmtree(runner.hgtmp, True) - for f in createdfiles: - try: - os.remove(f) - except OSError: - pass +def cleanup(runner): + if runner.options.keep_tmpdir: + return + + vlog("# Cleaning up HGTMP", runner.hgtmp) + shutil.rmtree(runner.hgtmp, True) + for f in createdfiles: + try: + os.remove(f) + except OSError: + pass def usecorrectpython(runner): # some tests run python interpreter. they must use same @@ -432,13 +434,13 @@ if not findprogram(pyexename): print "WARNING: Cannot find %s in search path" % pyexename -def installhg(runner, options): +def installhg(runner): vlog("# Performing temporary installation of HG") installerrs = os.path.join("tests", "install.err") compiler = '' - if options.compiler: - compiler = '--compiler ' + options.compiler - pure = options.pure and "--pure" or "" + if runner.options.compiler: + compiler = '--compiler ' + runner.options.compiler + pure = runner.options.pure and "--pure" or "" py3 = '' if sys.version_info[0] == 3: py3 = '--c2to3' @@ -465,7 +467,7 @@ 'nohome': nohome, 'logfile': installerrs}) vlog("# Running", cmd) if os.system(cmd) == 0: - if not options.verbose: + if not runner.options.verbose: os.remove(installerrs) else: f = open(installerrs) @@ -477,7 +479,7 @@ usecorrectpython(runner) - if options.py3k_warnings and not options.anycoverage: + if runner.options.py3k_warnings and not runner.options.anycoverage: vlog("# Updating hg command to enable Py3k Warnings switch") f = open(os.path.join(runner.bindir, 'hg'), 'r') lines = [line.rstrip() for line in f] @@ -504,7 +506,7 @@ else: print 'WARNING: cannot fix hg.bat reference to python.exe' - if options.anycoverage: + if runner.options.anycoverage: custom = os.path.join(runner.testdir, 'sitecustomize.py') target = os.path.join(runner.pythondir, 'sitecustomize.py') vlog('# Installing coverage trigger to %s' % target) @@ -523,7 +525,7 @@ for test, timetaken in times: print cols % (timetaken, test) -def outputcoverage(runner, options): +def outputcoverage(runner): vlog('# Producing coverage report') os.chdir(runner.pythondir) @@ -537,10 +539,10 @@ omit = ','.join(os.path.join(x, '*') for x in [runner.bindir, runner.testdir]) covrun('-i', '-r', '"--omit=%s"' % omit) # report - if options.htmlcov: + if runner.options.htmlcov: htmldir = os.path.join(runner.testdir, 'htmlcov') covrun('-i', '-b', '"--directory=%s"' % htmldir, '"--omit=%s"' % omit) - if options.annotate: + if runner.options.annotate: adir = os.path.join(runner.testdir, 'annotated') if not os.path.isdir(adir): os.mkdir(adir) @@ -553,14 +555,14 @@ runs cannot be run concurrently. """ - def __init__(self, runner, test, options, count, refpath): + def __init__(self, runner, test, count, refpath): path = os.path.join(runner.testdir, test) errpath = os.path.join(runner.testdir, '%s.err' % test) self._testdir = runner.testdir self._test = test self._path = path - self._options = options + self._options = runner.options self._count = count self._daemonpids = [] self._refpath = refpath @@ -568,7 +570,7 @@ # If we're not in --debug mode and reference output file exists, # check test output against it. - if options.debug: + if runner.options.debug: self._refout = None # to match "out is None" elif os.path.exists(refpath): f = open(refpath, 'r') @@ -1087,7 +1089,7 @@ return '+glob' return False -def gettest(runner, test, options, count): +def gettest(runner, test, count): """Obtain a Test by looking at its filename. Returns a Test instance. The Test may not be runnable if it doesn't map @@ -1105,7 +1107,7 @@ refpath = os.path.join(runner.testdir, test + out) break - return testcls(runner, test, options, count, refpath) + return testcls(runner, test, count, refpath) wifexited = getattr(os, "WIFEXITED", lambda x: False) def run(cmd, wd, options, replacements, env): @@ -1185,8 +1187,8 @@ iolock = threading.Lock() abort = False -def scheduletests(runner, options, tests): - jobs = options.jobs +def scheduletests(runner, tests): + jobs = runner.options.jobs done = queue.Queue() running = 0 count = 0 @@ -1194,7 +1196,7 @@ def job(test, count): try: - t = gettest(runner, test, options, count) + t = gettest(runner, test, count) done.put(t.run()) t.cleanup() except KeyboardInterrupt: @@ -1209,14 +1211,14 @@ try: code, test, msg = done.get(True, 1) results[code].append((test, msg)) - if options.first and code not in '.si': + if runner.options.first and code not in '.si': break except queue.Empty: continue running -= 1 if tests and not running == jobs: test = tests.pop(0) - if options.loop: + if runner.options.loop: tests.append(test) t = threading.Thread(target=job, name=test, args=(test, count)) t.start() @@ -1225,15 +1227,15 @@ except KeyboardInterrupt: abort = True -def runtests(runner, options, tests): +def runtests(runner, tests): try: if runner.inst: - installhg(runner, options) + installhg(runner) _checkhglib(runner, "Testing") else: usecorrectpython(runner) - if options.restart: + if runner.options.restart: orig = list(tests) while tests: if os.path.exists(tests[0] + ".err"): @@ -1243,7 +1245,7 @@ print "running all tests" tests = orig - scheduletests(runner, options, tests) + scheduletests(runner, tests) failed = len(results['!']) warned = len(results['~']) @@ -1252,7 +1254,7 @@ ignored = len(results['i']) print - if not options.noskips: + if not runner.options.noskips: for s in results['s']: print "Skipped %s: %s" % s for s in results['~']: @@ -1264,11 +1266,11 @@ tested, skipped + ignored, warned, failed) if results['!']: print 'python hash seed:', os.environ['PYTHONHASHSEED'] - if options.time: - outputtimes(options) + if runner.options.time: + outputtimes(runner.options) - if options.anycoverage: - outputcoverage(runner, options) + if runner.options.anycoverage: + outputcoverage(runner) except KeyboardInterrupt: failed = True print "\ninterrupted!" @@ -1419,10 +1421,10 @@ vlog("# Using", IMPL_PATH, os.environ[IMPL_PATH]) try: - return runtests(runner, options, tests) or 0 + return runtests(runner, tests) or 0 finally: time.sleep(.1) - cleanup(runner, options) + cleanup(runner) if __name__ == '__main__': sys.exit(main(sys.argv[1:]))