[py-svn] r57026 - in py/branch/event/py: code code/testing test2 test2/testing

hpk at codespeak.net hpk at codespeak.net
Wed Aug 6 15:23:52 CEST 2008


Author: hpk
Date: Wed Aug  6 15:23:51 2008
New Revision: 57026

Modified:
   py/branch/event/py/code/excinfo.py
   py/branch/event/py/code/testing/test_excinfo.py
   py/branch/event/py/test2/collect.py
   py/branch/event/py/test2/pycollect.py
   py/branch/event/py/test2/testing/acceptance_test.py
   py/branch/event/py/test2/testing/test_session.py
   py/branch/event/py/test2/testing/test_setup_nested.py
Log:
* allow to add sections to ReprExceptionInfo 
* provide out/err sections on captured output/err 


Modified: py/branch/event/py/code/excinfo.py
==============================================================================
--- py/branch/event/py/code/excinfo.py	(original)
+++ py/branch/event/py/code/excinfo.py	Wed Aug  6 15:23:51 2008
@@ -200,9 +200,16 @@
     def __init__(self, reprtraceback, exconly):
         self.reprtraceback = reprtraceback
         self.exconly = exconly
+        self.sections = []
+
+    def addsection(self, name, content, sep="-"):
+        self.sections.append((name, content, sep))
 
     def toterminal(self, tw):
         self.reprtraceback.toterminal(tw)
+        for name, content, sep in self.sections:
+            tw.sep(sep, name)
+            tw.line(content)
     
 class ReprTraceback(Repr):
     entrysep = "_ "

Modified: py/branch/event/py/code/testing/test_excinfo.py
==============================================================================
--- py/branch/event/py/code/testing/test_excinfo.py	(original)
+++ py/branch/event/py/code/testing/test_excinfo.py	Wed Aug  6 15:23:51 2008
@@ -378,6 +378,19 @@
             assert len(repr.reprtraceback.reprentries) == len(reprtb.reprentries)
             assert repr.exconly == "ValueError: 0"
 
+    def test_repr_excinfo_addouterr(self):
+        mod = self.importasmod("""
+            def entry():
+                raise ValueError()
+        """)
+        excinfo = py.test.raises(ValueError, mod.entry)
+        repr = excinfo.getrepr()
+        repr.addsection("title", "content")
+        twmock = TWMock()
+        repr.toterminal(twmock)
+        assert twmock.lines[-1] == "content"
+        assert twmock.lines[-2] == ("-", "title")
+
     def test_repr_traceback_recursion(self):
         mod = self.importasmod("""
             def rec2(x):

Modified: py/branch/event/py/test2/collect.py
==============================================================================
--- py/branch/event/py/test2/collect.py	(original)
+++ py/branch/event/py/test2/collect.py	Wed Aug  6 15:23:51 2008
@@ -221,9 +221,11 @@
 
     def _getfailurerepr_py(self, excinfo, outerr):
         repr = excinfo.getrepr()
-        # XXX outerr
+        for secname, content in zip(["out", "err"], outerr):
+            if content:
+                repr.addsection("Captured std%s" % secname, content.rstrip())
         return repr 
-    shortfailurerepr = "f"
+    shortfailurerepr = "F"
 
 class Collector(Node):
     """ 

Modified: py/branch/event/py/test2/pycollect.py
==============================================================================
--- py/branch/event/py/test2/pycollect.py	(original)
+++ py/branch/event/py/test2/pycollect.py	Wed Aug  6 15:23:51 2008
@@ -219,9 +219,6 @@
 
     def getfailurerepr(self, excinfo, outerr):
         return self._getfailurerepr_py(excinfo, outerr)
-        #repr = excinfo._formatrepr()
-        ## XXX outerr
-        #return repr 
 
     shortfailurerepr = "F"
 

Modified: py/branch/event/py/test2/testing/acceptance_test.py
==============================================================================
--- py/branch/event/py/test2/testing/acceptance_test.py	(original)
+++ py/branch/event/py/test2/testing/acceptance_test.py	Wed Aug  6 15:23:51 2008
@@ -197,7 +197,29 @@
             "*test_fail.py:4: AssertionError: assert 3 == 2",
         ])
 
-
+    def test_capturing_outerr(self): 
+        p1 = self.makepyfile(test_one="""
+            import sys 
+            def test_capturing():
+                print 42
+                print >>sys.stderr, 23 
+            def test_capturing_error():
+                print 1
+                print >>sys.stderr, 2
+                raise ValueError
+        """)
+        result = self.runpytest(p1)
+        assert_lines_contain_lines(result.outlines, [
+            "test_one.py .F", 
+            "====* FAILURES *====",
+            "____*____", 
+            "*test_one.py:8: ValueError",
+            "*--- Captured stdout ---*",
+            "1",
+            "*--- Captured stderr ---*",
+            "2",
+        ])
+        
     def test_looponfailing_looping(self):
         py.test.skip("thought needed to nicely test --looponfailing")
         py.test.skip("xxx check events")

Modified: py/branch/event/py/test2/testing/test_session.py
==============================================================================
--- py/branch/event/py/test2/testing/test_session.py	(original)
+++ py/branch/event/py/test2/testing/test_session.py	Wed Aug  6 15:23:51 2008
@@ -86,34 +86,6 @@
         i = out.find('TypeError') 
         assert i != -1 
 
-    def test_Function_capturing(self): 
-        tfile = suptest.makeuniquepyfile(""" 
-            import py
-            print "module level output"
-            def test_capturing():
-                print 42
-                print >>py.std.sys.stderr, 23 
-            def test_capturing_error():
-                print 1
-                print >>py.std.sys.stderr, 2
-                raise ValueError
-        """)
-        sorter = suptest.events_from_cmdline([tfile.dirpath()])
-        passed, skipped, failed = sorter.listoutcomes()
-        assert len(passed) == 1
-        assert len(failed) == 1
-
-        py.test.skip("implement CAPTURING reporting")
-        ev_list = sorter.get(repevent.ItemTestReport)
-        ev1, ev2 = ev_list
-        out, err = ev1.outcome.outerr
-        assert out == "42\n"
-        assert err == "23\n"
-
-        out, err = ev2.outcome.outerr
-        assert out == "1\n"
-        assert err == "2\n"
-
     def test_raises_output(self): 
         sorter = suptest.events_from_runsource('''
             import py

Modified: py/branch/event/py/test2/testing/test_setup_nested.py
==============================================================================
--- py/branch/event/py/test2/testing/test_setup_nested.py	(original)
+++ py/branch/event/py/test2/testing/test_setup_nested.py	Wed Aug  6 15:23:51 2008
@@ -123,7 +123,4 @@
     """)
     rep = sorter.getreport("test_one") 
     assert rep.passed 
-    py.test.skip("implement report capturing")
-    assert rep.repr_run.find("check\n") != -1
-    assert rep.repr_run.find("e\n") != -1
         



More information about the pytest-commit mailing list