[svn r45518] Print out communicate atomically

--HG--
branch : trunk
This commit is contained in:
fijal 2007-08-06 15:57:55 +02:00
parent 5f62c21272
commit f78a355042
1 changed files with 17 additions and 11 deletions

View File

@ -14,6 +14,7 @@ from py.__.misc.terminal_helper import ansi_print, get_terminal_width
from py.__.test.representation import Presenter
import sys
import thread
class AbstractReporter(object):
def __init__(self, config, hosts):
@ -27,23 +28,28 @@ class AbstractReporter(object):
self.skipped = dict([(host, 0) for host in hosts])
self.passed = dict([(host, 0) for host in hosts])
self.to_rsync = {}
self.lock = thread.allocate_lock()
def get_item_name(self, event, colitem):
return "/".join(colitem.listnames())
def report(self, what):
repfun = getattr(self, "report_" + what.__class__.__name__,
self.report_unknown)
try:
return repfun(what)
except (KeyboardInterrupt, SystemExit):
raise
except:
print "Internal reporting problem"
excinfo = py.code.ExceptionInfo()
for i in excinfo.traceback:
print str(i)[2:-1]
print excinfo
self.lock.acquire()
repfun = getattr(self, "report_" + what.__class__.__name__,
self.report_unknown)
try:
return repfun(what)
except (KeyboardInterrupt, SystemExit):
raise
except:
print "Internal reporting problem"
excinfo = py.code.ExceptionInfo()
for i in excinfo.traceback:
print str(i)[2:-1]
print excinfo
finally:
self.lock.release()
def report_unknown(self, what):
if self.config.option.verbose: