# HG changeset patch # User Siddharth Agarwal # Date 1352500956 28800 # Node ID 06d4b5a1c4e81551e8c215bf8ce46178a8ccb6db # Parent 380eea1f5add6c3e37e886ebdb5dd83dcadd01b8 run-tests: use pickle to send results from children to parent JSON would probably be preferable, but it isn't available for Python 2.4 or 2.5. [ original upstream message ] diff -r 380eea1f5add -r 06d4b5a1c4e8 tests/run-tests.py --- a/tests/run-tests.py Wed Oct 24 23:09:31 2012 +0200 +++ b/tests/run-tests.py Fri Nov 09 14:42:36 2012 -0800 @@ -55,6 +55,7 @@ import re import threading import killdaemons as killmod +import cPickle as pickle processlock = threading.Lock() @@ -1060,25 +1061,23 @@ os.close(wfd) signal.signal(signal.SIGINT, signal.SIG_IGN) failures = 0 - tested, skipped, failed = 0, 0, 0 + passed, skipped, failed = 0, 0, 0 skips = [] fails = [] while fps: pid, status = os.wait() fp = fps.pop(pid) - l = fp.read().splitlines() try: - test, skip, fail = map(int, l[:3]) - except ValueError: - test, skip, fail = 0, 0, 0 - split = -fail or len(l) - for s in l[3:split]: - skips.append(s.split(" ", 1)) - for s in l[split:]: - fails.append(s.split(" ", 1)) - tested += test - skipped += skip - failed += fail + childresults = pickle.load(fp) + except pickle.UnpicklingError: + pass + else: + passed += len(childresults['p']) + skipped += len(childresults['s']) + failed += len(childresults['f']) + skips.extend(childresults['s']) + fails.extend(childresults['f']) + vlog('pid %d exited, status %d' % (pid, status)) failures |= status print @@ -1093,7 +1092,7 @@ _checkhglib("Tested") print "# Ran %d tests, %d skipped, %d failed." % ( - tested, skipped, failed) + passed + failed, skipped, failed) if options.anycoverage: outputcoverage(options) @@ -1138,11 +1137,7 @@ if options.child: fp = os.fdopen(options.child, 'w') - fp.write('%d\n%d\n%d\n' % (tested, skipped, failed)) - for s in results['s']: - fp.write("%s %s\n" % s) - for s in results['f']: - fp.write("%s %s\n" % s) + pickle.dump(results, fp, pickle.HIGHEST_PROTOCOL) fp.close() else: print