[py-svn] r31593 - in py/branch/distributed/py/test/rsession: . testing
fijal at codespeak.net
fijal at codespeak.net
Thu Aug 24 13:05:11 CEST 2006
Author: fijal
Date: Thu Aug 24 13:05:09 2006
New Revision: 31593
Modified:
py/branch/distributed/py/test/rsession/outcome.py
py/branch/distributed/py/test/rsession/testing/test_master.py
py/branch/distributed/py/test/rsession/testing/test_outcome.py
Log:
(hpk, fijal) - Added simple traceback representation for remote tracebacks.
Modified: py/branch/distributed/py/test/rsession/outcome.py
==============================================================================
--- py/branch/distributed/py/test/rsession/outcome.py (original)
+++ py/branch/distributed/py/test/rsession/outcome.py Thu Aug 24 13:05:09 2006
@@ -16,14 +16,36 @@
self.is_critical = is_critical
assert bool(self.passed) + bool(excinfo) + bool(skipped) == 1
+ def make_excinfo_repr(self):
+ if self.excinfo is None:
+ return None
+ excinfo = self.excinfo
+ tb_info = [str(x) for x in excinfo.traceback]
+ return (excinfo.type.__name__, str(excinfo.value), tb_info)
+
def make_repr(self):
- return (self.passed, self.setupfailure, str(self.excinfo),
+ return (self.passed, self.setupfailure,
+ self.make_excinfo_repr(),
self.skipped, self.is_critical)
+class ExcInfoRepr(object):
+ def __init__(self, excinfo):
+ self.typename, self.value, self.traceback = excinfo
+
+ def __repr__(self):
+ l = ["%s=%s" %(x, getattr(self, x))
+ for x in "typename value traceback".split()]
+ return "<ExcInfoRepr %s>" %(" ".join(l),)
+
+
class ReprOutcome(object):
def __init__(self, repr_tuple):
- (self.passed, self.setupfailure, self.excinfo, self.skipped,
+ (self.passed, self.setupfailure, excinfo, self.skipped,
self.is_critical) = repr_tuple
+ if excinfo is None:
+ self.excinfo = None
+ else:
+ self.excinfo = ExcInfoRepr(excinfo)
def __repr__(self):
l = ["%s=%s" %(x, getattr(self, x))
Modified: py/branch/distributed/py/test/rsession/testing/test_master.py
==============================================================================
--- py/branch/distributed/py/test/rsession/testing/test_master.py (original)
+++ py/branch/distributed/py/test/rsession/testing/test_master.py Thu Aug 24 13:05:09 2006
@@ -25,13 +25,18 @@
self.sent.append(item)
def test_masternode():
+ try:
+ raise ValueError()
+ except ValueError:
+ excinfo = py.code.ExceptionInfo()
+
ch = DummyChannel()
reportlist = []
mnode = MasterNode(ch, reportlist.append)
mnode.send(py.test.Item("ok"))
mnode.send(py.test.Item("notok"))
ch.callback(Outcome().make_repr())
- ch.callback(Outcome(excinfo=42).make_repr())
+ ch.callback(Outcome(excinfo=excinfo).make_repr())
assert len(reportlist) == 4
received = [i for i in reportlist
if isinstance(i, report.ReceivedItemOutcome)]
Modified: py/branch/distributed/py/test/rsession/testing/test_outcome.py
==============================================================================
--- py/branch/distributed/py/test/rsession/testing/test_outcome.py (original)
+++ py/branch/distributed/py/test/rsession/testing/test_outcome.py Thu Aug 24 13:05:09 2006
@@ -1,9 +1,33 @@
-from py.__.test.rsession.outcome import Outcome, ReprOutcome
+import py
+from py.__.test.rsession.outcome import Outcome, ReprOutcome, ExcInfoRepr
+
+import marshal
def test_critical_debugging_flag():
outcome = Outcome(is_critical=True)
r = ReprOutcome(outcome.make_repr())
assert r.is_critical
+def f1():
+ raise ValueError(42)
+
+def f2():
+ f1()
+
+def f3():
+ f2()
+
+def test_exception_info_repr():
+ try:
+ f3()
+ except:
+ outcome = Outcome(excinfo=py.code.ExceptionInfo())
+
+ repr = outcome.make_excinfo_repr()
+ assert marshal.dumps(repr)
+ excinfo = ExcInfoRepr(repr)
+ assert str(excinfo.typename) == "ValueError"
+ assert str(excinfo.value) == "42"
+ assert len(excinfo.traceback) == 4
More information about the pytest-commit
mailing list