[PATCH 1 of 3] run-tests: use pickle to send results from children to parent
Siddharth Agarwal
sid0 at fb.com
Fri Nov 9 17:17:13 CST 2012
# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1352500956 28800
# Node ID f333cd9952248730977f8129a3ef34e7a26898e7
# Parent 6ac7ad13790a6ac3f93bf7fb3efa576006e046a2
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.
diff -r 6ac7ad13790a -r f333cd995224 tests/run-tests.py
--- a/tests/run-tests.py Thu Nov 08 14:10:04 2012 -0800
+++ 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
More information about the Mercurial-devel
mailing list