[Pytest-commit] commit/pytest: 2 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Apr 16 09:02:12 CEST 2013
2 new commits in pytest:
https://bitbucket.org/hpk42/pytest/commits/69543636b13a/
Changeset: 69543636b13a
User: adamgoucher
Date: 2013-04-16 06:45:14
Summary: stdout/stderr now captured by junitxml
Affected #: 3 files
diff -r 82139da07b58da52fc124be4218c8957b71f3ac1 -r 69543636b13a1e2cad7e9296b0b69d6b785577fb _pytest/capture.py
--- a/_pytest/capture.py
+++ b/_pytest/capture.py
@@ -173,8 +173,7 @@
if funcarg_outerr is not None:
outerr = (outerr[0] + funcarg_outerr[0],
outerr[1] + funcarg_outerr[1])
- if not rep.passed:
- addouterr(rep, outerr)
+ addouterr(rep, outerr)
if not rep.passed or rep.when == "teardown":
outerr = ('', '')
item.outerr = outerr
diff -r 82139da07b58da52fc124be4218c8957b71f3ac1 -r 69543636b13a1e2cad7e9296b0b69d6b785577fb _pytest/junitxml.py
--- a/_pytest/junitxml.py
+++ b/_pytest/junitxml.py
@@ -107,11 +107,20 @@
time=getattr(report, 'duration', 0)
))
+ def _write_captured_output(self, report):
+ sec = dict(report.sections)
+ for name in ('out', 'err'):
+ content = sec.get("Captured std%s" % name)
+ if content:
+ tag = getattr(Junit, 'system-'+name)
+ self.append(tag(bin_xml_escape(content)))
+
def append(self, obj):
self.tests[-1].append(obj)
def append_pass(self, report):
self.passed += 1
+ self._write_captured_output(report)
def append_failure(self, report):
#msg = str(report.longrepr.reprtraceback.extraline)
@@ -120,16 +129,11 @@
Junit.skipped(message="xfail-marked test passes unexpectedly"))
self.skipped += 1
else:
- sec = dict(report.sections)
fail = Junit.failure(message="test failure")
fail.append(str(report.longrepr))
self.append(fail)
- for name in ('out', 'err'):
- content = sec.get("Captured std%s" % name)
- if content:
- tag = getattr(Junit, 'system-'+name)
- self.append(tag(bin_xml_escape(content)))
self.failed += 1
+ self._write_captured_output(report)
def append_collect_failure(self, report):
#msg = str(report.longrepr.reprtraceback.extraline)
@@ -162,6 +166,7 @@
message=skipreason
))
self.skipped += 1
+ self._write_captured_output(report)
def pytest_runtest_logreport(self, report):
if report.passed:
diff -r 82139da07b58da52fc124be4218c8957b71f3ac1 -r 69543636b13a1e2cad7e9296b0b69d6b785577fb testing/test_junitxml.py
--- a/testing/test_junitxml.py
+++ b/testing/test_junitxml.py
@@ -282,13 +282,35 @@
if not sys.platform.startswith("java"):
assert "hx" in fnode.toxml()
+ def test_pass_captures_stdout(self, testdir):
+ testdir.makepyfile("""
+ def test_pass():
+ print('hello-stdout')
+ """)
+ result, dom = runandparse(testdir)
+ node = dom.getElementsByTagName("testsuite")[0]
+ pnode = node.getElementsByTagName("testcase")[0]
+ systemout = pnode.getElementsByTagName("system-out")[0]
+ assert "hello-stdout" in systemout.toxml()
+
+ def test_pass_captures_stderr(self, testdir):
+ testdir.makepyfile("""
+ import sys
+ def test_pass():
+ sys.stderr.write('hello-stderr')
+ """)
+ result, dom = runandparse(testdir)
+ node = dom.getElementsByTagName("testsuite")[0]
+ pnode = node.getElementsByTagName("testcase")[0]
+ systemout = pnode.getElementsByTagName("system-err")[0]
+ assert "hello-stderr" in systemout.toxml()
+
def test_mangle_testnames():
from _pytest.junitxml import mangle_testnames
names = ["a/pything.py", "Class", "()", "method"]
newnames = mangle_testnames(names)
assert newnames == ["a.pything", "Class", "method"]
-
def test_dont_configure_on_slaves(tmpdir):
gotten = []
class FakeConfig:
https://bitbucket.org/hpk42/pytest/commits/a8b625d3000c/
Changeset: a8b625d3000c
User: hpk42
Date: 2013-04-16 09:02:08
Summary: Merged in adamgoucher/pytest (pull request #29)
stdout/stderr now captured by junitxml
Affected #: 3 files
diff -r 1e37dc2b23fe92b81da6be1c4b6bde2025ee4f1b -r a8b625d3000c8048a9630d6bf8dc45bdabc44a9a _pytest/capture.py
--- a/_pytest/capture.py
+++ b/_pytest/capture.py
@@ -173,8 +173,7 @@
if funcarg_outerr is not None:
outerr = (outerr[0] + funcarg_outerr[0],
outerr[1] + funcarg_outerr[1])
- if not rep.passed:
- addouterr(rep, outerr)
+ addouterr(rep, outerr)
if not rep.passed or rep.when == "teardown":
outerr = ('', '')
item.outerr = outerr
diff -r 1e37dc2b23fe92b81da6be1c4b6bde2025ee4f1b -r a8b625d3000c8048a9630d6bf8dc45bdabc44a9a _pytest/junitxml.py
--- a/_pytest/junitxml.py
+++ b/_pytest/junitxml.py
@@ -107,11 +107,20 @@
time=getattr(report, 'duration', 0)
))
+ def _write_captured_output(self, report):
+ sec = dict(report.sections)
+ for name in ('out', 'err'):
+ content = sec.get("Captured std%s" % name)
+ if content:
+ tag = getattr(Junit, 'system-'+name)
+ self.append(tag(bin_xml_escape(content)))
+
def append(self, obj):
self.tests[-1].append(obj)
def append_pass(self, report):
self.passed += 1
+ self._write_captured_output(report)
def append_failure(self, report):
#msg = str(report.longrepr.reprtraceback.extraline)
@@ -120,16 +129,11 @@
Junit.skipped(message="xfail-marked test passes unexpectedly"))
self.skipped += 1
else:
- sec = dict(report.sections)
fail = Junit.failure(message="test failure")
fail.append(str(report.longrepr))
self.append(fail)
- for name in ('out', 'err'):
- content = sec.get("Captured std%s" % name)
- if content:
- tag = getattr(Junit, 'system-'+name)
- self.append(tag(bin_xml_escape(content)))
self.failed += 1
+ self._write_captured_output(report)
def append_collect_failure(self, report):
#msg = str(report.longrepr.reprtraceback.extraline)
@@ -162,6 +166,7 @@
message=skipreason
))
self.skipped += 1
+ self._write_captured_output(report)
def pytest_runtest_logreport(self, report):
if report.passed:
diff -r 1e37dc2b23fe92b81da6be1c4b6bde2025ee4f1b -r a8b625d3000c8048a9630d6bf8dc45bdabc44a9a testing/test_junitxml.py
--- a/testing/test_junitxml.py
+++ b/testing/test_junitxml.py
@@ -282,13 +282,35 @@
if not sys.platform.startswith("java"):
assert "hx" in fnode.toxml()
+ def test_pass_captures_stdout(self, testdir):
+ testdir.makepyfile("""
+ def test_pass():
+ print('hello-stdout')
+ """)
+ result, dom = runandparse(testdir)
+ node = dom.getElementsByTagName("testsuite")[0]
+ pnode = node.getElementsByTagName("testcase")[0]
+ systemout = pnode.getElementsByTagName("system-out")[0]
+ assert "hello-stdout" in systemout.toxml()
+
+ def test_pass_captures_stderr(self, testdir):
+ testdir.makepyfile("""
+ import sys
+ def test_pass():
+ sys.stderr.write('hello-stderr')
+ """)
+ result, dom = runandparse(testdir)
+ node = dom.getElementsByTagName("testsuite")[0]
+ pnode = node.getElementsByTagName("testcase")[0]
+ systemout = pnode.getElementsByTagName("system-err")[0]
+ assert "hello-stderr" in systemout.toxml()
+
def test_mangle_testnames():
from _pytest.junitxml import mangle_testnames
names = ["a/pything.py", "Class", "()", "method"]
newnames = mangle_testnames(names)
assert newnames == ["a.pything", "Class", "method"]
-
def test_dont_configure_on_slaves(tmpdir):
gotten = []
class FakeConfig:
Repository URL: https://bitbucket.org/hpk42/pytest/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the pytest-commit
mailing list