run-tests: add a lock for console I/O
authorMatt Mackall <mpm@selenic.com>
Sun, 24 Apr 2011 16:46:37 -0500
changeset 14002 a738c30d4b18
parent 14001 9c4da6ab4e5a
child 14003 ba734ff5cadd
run-tests: add a lock for console I/O
tests/run-tests.py
--- a/tests/run-tests.py	Sun Apr 24 16:42:15 2011 -0500
+++ b/tests/run-tests.py	Sun Apr 24 16:46:37 2011 -0500
@@ -654,7 +654,7 @@
     True -> passed
     False -> failed'''
 
-    global results, resultslock
+    global results, resultslock, iolock
 
     testpath = os.path.join(TESTDIR, test)
 
@@ -825,18 +825,22 @@
         else:
             fail("output changed", ret)
         if ret != 'timeout' and not options.nodiff:
+            iolock.acquire()
             if options.view:
                 os.system("%s %s %s" % (options.view, ref, err))
             else:
                 showdiff(refout, out, ref, err)
+            iolock.release()
         ret = 1
     elif ret:
         mark = '!'
         fail("returned error code %d" % ret, ret)
 
     if not options.verbose:
+        iolock.acquire()
         sys.stdout.write(mark)
         sys.stdout.flush()
+        iolock.release()
 
     killdaemons()
 
@@ -954,6 +958,7 @@
 
 results = dict(p=[], f=[], s=[], i=[])
 resultslock = threading.Lock()
+iolock = threading.Lock()
 
 def runqueue(options, tests, results):
     for test in tests: