[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