Mercurial > hg-stable
changeset 13994:f31a5b7f5c07
run-tests: use a results dict
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 22 Apr 2011 12:24:22 -0500 |
parents | 174d0a113757 |
children | b29b7cbc252f |
files | tests/run-tests.py |
diffstat | 1 files changed, 26 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/run-tests.py Fri Apr 22 11:36:40 2011 -0500 +++ b/tests/run-tests.py Fri Apr 22 12:24:22 2011 -0500 @@ -633,7 +633,7 @@ output = re.sub(s, r, output) return ret, splitnewlines(output) -def runone(options, test, skips, passes, fails, ignores): +def runone(options, test, results): '''tristate output: None -> skipped True -> passed @@ -643,7 +643,7 @@ def skip(msg): if not options.verbose: - skips.append((test, msg)) + results['s'].append((test, msg)) else: print "\nSkipping %s: %s" % (testpath, msg) return None @@ -660,7 +660,13 @@ else: rename(test + ".err", test + ".out") return - fails.append((test, msg)) + results['f'].append((test, msg)) + + def success(): + results['p'].append(test) + + def ignore(msg): + results['i'].append((test, msg)) if (test.startswith("test-") and '~' not in test and ('.' not in test or test.endswith('.py') or @@ -678,7 +684,7 @@ return None if options.retest and not os.path.exists(test + ".err"): - ignores.append((test, "not retesting")) + ignore("not retesting") return None if options.keywords: @@ -689,7 +695,7 @@ if k in t: break else: - ignores.append((test, "doesn't match keyword")) + ignore("doesn't match keyword") return None vlog("# Test", test) @@ -756,7 +762,7 @@ mark = '.' if ret == 0: - passes.append(test) + success() skipped = (ret == SKIPPED_STATUS) @@ -933,6 +939,8 @@ DAEMON_PIDS = os.environ["DAEMON_PIDS"] = os.path.join(HGTMP, 'daemon.pids') HGRCPATH = os.environ["HGRCPATH"] = os.path.join(HGTMP, '.hgrc') + results = dict(p=[], f=[], s=[], i=[]) + try: if INST: installhg(options) @@ -957,33 +965,33 @@ print "running all tests" tests = orig - passes = [] - skips = [] - fails = [] - ignores = [] - for test in tests: - ret = runone(options, test, skips, passes, fails, ignores) + ret = runone(options, test, results) if options.first and ret is not None and not ret: break + failed = len(results['f']) + tested = len(results['p']) + failed + skipped = len(results['s']) + ignored = len(results['i']) + if options.child: fp = os.fdopen(options.child, 'w') fp.write('%d\n%d\n%d\n' % (tested, skipped, failed)) - for s in skips: + for s in results['s']: fp.write("%s %s\n" % s) - for s in fails: + for s in results['f']: fp.write("%s %s\n" % s) fp.close() else: print - for s in skips: + for s in results['s']: print "Skipped %s: %s" % s - for s in fails: + for s in results['f']: print "Failed %s: %s" % s _checkhglib("Tested") print "# Ran %d tests, %d skipped, %d failed." % ( - len(passes) + len(fails), len(skips) + len(ignores), len(fails)) + tested, skipped + ignored, failed) if options.anycoverage: outputcoverage(options) @@ -991,7 +999,7 @@ failed = True print "\ninterrupted!" - if fails: + if failed: sys.exit(1) def main():