[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