refine and extend custom error reporting particularly for collection-related errors

--HG--
branch : trunk
This commit is contained in:
holger krekel
2010-07-04 17:06:50 +02:00
parent e533e63bbf
commit f9c5b00ffa
12 changed files with 108 additions and 28 deletions

View File

@@ -126,6 +126,12 @@ class BaseReport(object):
longrepr.toterminal(out)
else:
out.line(str(longrepr))
class CollectErrorRepr(BaseReport):
def __init__(self, msg):
self.longrepr = msg
def toterminal(self, out):
out.line(str(self.longrepr), red=True)
class ItemTestReport(BaseReport):
failed = passed = skipped = False
@@ -188,16 +194,16 @@ class CollectReport(BaseReport):
self.passed = True
self.result = result
else:
style = "short"
if collector.config.getvalue("fulltrace"):
style = "long"
self.longrepr = self.collector._repr_failure_py(excinfo,
style=style)
if excinfo.errisinstance(py.test.skip.Exception):
self.skipped = True
self.reason = str(excinfo.value)
self.longrepr = self.collector._repr_failure_py(excinfo, "line")
else:
self.failed = True
errorinfo = self.collector.repr_failure(excinfo)
if not hasattr(errorinfo, "toterminal"):
errorinfo = CollectErrorRepr(errorinfo)
self.longrepr = errorinfo
def getnode(self):
return self.collector
@@ -448,3 +454,4 @@ def importorskip(modname, minversion=None):
modname, verattr, minversion))
return mod

View File

@@ -274,7 +274,6 @@ class TerminalReporter:
if not report.passed:
if report.failed:
self.stats.setdefault("error", []).append(report)
msg = report.longrepr.reprcrash.message
self.write_fspath_result(report.collector.fspath, "E")
elif report.skipped:
self.stats.setdefault("skipped", []).append(report)
@@ -403,7 +402,7 @@ class TerminalReporter:
msg = self._getfailureheadline(rep)
if not hasattr(rep, 'when'):
# collect
msg = "ERROR during collection " + msg
msg = "ERROR collecting " + msg
elif rep.when == "setup":
msg = "ERROR at setup of " + msg
elif rep.when == "teardown":