[py-svn] r51652 - in py/branch/event/py/test2: . testing
hpk at codespeak.net
hpk at codespeak.net
Tue Feb 19 20:57:41 CET 2008
Author: hpk
Date: Tue Feb 19 20:57:39 2008
New Revision: 51652
Modified:
py/branch/event/py/test2/collect.py
py/branch/event/py/test2/item.py
py/branch/event/py/test2/present.py
py/branch/event/py/test2/testing/test_present.py
Log:
refine traceback filtering and test failing generators some more
Modified: py/branch/event/py/test2/collect.py
==============================================================================
--- py/branch/event/py/test2/collect.py (original)
+++ py/branch/event/py/test2/collect.py Tue Feb 19 20:57:39 2008
@@ -25,6 +25,7 @@
"""
from __future__ import generators
import py
+from py.__.test2 import present
sysex = (KeyboardInterrupt, SystemExit, GeneratorExit)
@@ -160,6 +161,16 @@
"""
return self._config.get_collector_trail(self)
+ def repr_failure(self, excinfo):
+ p = present.FuncPresenter(self._config)
+ p.repr_failure_headline(self)
+ p.out.line("")
+ p.repr_tb(self, excinfo)
+ return p.stringio.getvalue()
+
+ def prunetraceback(self, traceback):
+ return traceback
+
class Collector(Base):
"""
@@ -449,6 +460,16 @@
if meth is not None:
return meth(self.obj)
+ def prunetraceback(self, traceback):
+ if not self._config.option.fulltrace:
+ code = py.code.Code(self.obj)
+ path, firstlineno = code.path, code.firstlineno
+ ntraceback = traceback.cut(path=path, firstlineno=firstlineno)
+ if ntraceback == traceback:
+ ntraceback = ntraceback.cut(path=path)
+ traceback = ntraceback.filter()
+ return traceback
+
class Generator(FunctionMixin, PyCollectorMixin, Collector):
def listdir(self):
self._prepare()
Modified: py/branch/event/py/test2/item.py
==============================================================================
--- py/branch/event/py/test2/item.py (original)
+++ py/branch/event/py/test2/item.py Tue Feb 19 20:57:39 2008
@@ -70,7 +70,7 @@
p = present.FuncPresenter(self._config)
p.repr_failure_headline(self)
p.out.line("")
- if self.name[-1] == "]": # generated test has trailing [num]
+ if self.name[-1] == "]": # print extra info for generated tests
if not self._config.option.fulltrace:
args = present.safe_repr._repr(self._args)
line = "%s%s -> %s%s" %(self.parent.name, self.name,
Modified: py/branch/event/py/test2/present.py
==============================================================================
--- py/branch/event/py/test2/present.py (original)
+++ py/branch/event/py/test2/present.py Tue Feb 19 20:57:39 2008
@@ -124,17 +124,6 @@
self.out.line("%-10s =\\" % (name,))
py.std.pprint.pprint(value, stream=self.out)
- def filtertraceback(self, item, traceback):
- if isinstance(item, py.test2.collect.Function) \
- and not self.config.option.fulltrace:
- code = py.code.Code(item.obj)
- path, firstlineno = code.path, code.firstlineno
- ntraceback = traceback.cut(path=path, firstlineno=firstlineno)
- if ntraceback == traceback:
- ntraceback = ntraceback.cut(path=path)
- traceback = ntraceback.filter()
- return traceback
-
def repr_failure(self, item, excinfo):
self.repr_failure_headline(item)
self.repr_tb(item, excinfo)
@@ -163,7 +152,7 @@
self.repr_out_err(item)
def repr_tb(self, item, excinfo):
- traceback = self.filtertraceback(item, excinfo.traceback)
+ traceback = item.prunetraceback(excinfo.traceback)
recursionindex = traceback.recursionindex()
repr_tb = getattr(self, "repr_tb_" + self.config.option.tbstyle)
repr_tb(item, excinfo, traceback, recursionindex)
Modified: py/branch/event/py/test2/testing/test_present.py
==============================================================================
--- py/branch/event/py/test2/testing/test_present.py (original)
+++ py/branch/event/py/test2/testing/test_present.py Tue Feb 19 20:57:39 2008
@@ -144,7 +144,26 @@
self.gentest(check, fulltrace=True)
self.gentest(check, showlocals=True)
- def test_repr_failing_generator(self):
+ def test_repr_failing_generator_itself(self):
+ sorter = suptest.events_from_runsource("""
+ def test_gen():
+ def check(x):
+ assert x
+ xyz
+ yield check, 0
+ """)
+ l = sorter.getfailedcollections()
+ assert len(l) == 1
+ ev = l[0]
+ print ev
+ s = ev.collector.repr_failure(ev.excinfo)
+ print s
+ i = s.find("def ")
+ assert i != -1
+ assert s[i:].startswith("def test_gen():")
+ assert s.find("NameError: ") != -1
+
+ def test_repr_failing_generated_test(self):
item, excinfo = suptest.getfailing("""
def test_gen():
def check(x):
More information about the pytest-commit
mailing list