[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