[py-svn] py-trunk commit dd3f0c0bc8a3: fix xml generation for skipped collections of tests

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Thu Dec 31 11:50:24 CET 2009


# HG changeset patch -- Bitbucket.org
# Project py-trunk
# URL http://bitbucket.org/hpk42/py-trunk/overview/
# User holger krekel <holger at merlinux.eu>
# Date 1262256601 -3600
# Node ID dd3f0c0bc8a35eff3b87dea5f453836fd9e4cce3
# Parent c14662d121ddf1631d99e4639b3532d11c91eab9
fix xml generation for skipped collections of tests

--- a/py/plugin/pytest_logxml.py
+++ b/py/plugin/pytest_logxml.py
@@ -76,6 +76,15 @@ class LogXML(object):
         self._closetestcase()
         self.errors += 1
 
+    def append_collect_skipped(self, report):
+        self._opentestcase_collectfailure(report)
+        s = py.xml.escape(str(report.longrepr))
+        #msg = str(report.longrepr.reprtraceback.extraline)
+        self.test_logs.append(
+            '<skipped message="collection skipped">%s</skipped>' % (s))
+        self._closetestcase()
+        self.skipped += 1
+
     def append_error(self, report):
         self._opentestcase(report)
         s = py.xml.escape(str(report.longrepr))
@@ -130,7 +139,7 @@ class LogXML(object):
         logfile = open(self.logfile, 'w', 1) # line buffered
         suite_stop_time = time.time()
         suite_time_delta = suite_stop_time - self.suite_start_time
-        numtests = self.passed + self.skipped + self.failed
+        numtests = self.passed + self.failed
         logfile.write('<testsuite ')
         logfile.write('name="" ')
         logfile.write('errors="%i" ' % self.errors)

--- a/testing/plugin/test_pytest_logxml.py
+++ b/testing/plugin/test_pytest_logxml.py
@@ -28,7 +28,7 @@ class TestPython:
         result, dom = runandparse(testdir)
         assert result.ret 
         node = dom.getElementsByTagName("testsuite")[0]
-        assert_attr(node, errors=0, failures=1, skips=1, tests=3)
+        assert_attr(node, errors=0, failures=1, skips=1, tests=2)
 
     def test_setup_error(self, testdir):
         testdir.makepyfile("""
@@ -90,6 +90,19 @@ class TestPython:
         assert_attr(fnode, message="collection failure")
         assert "invalid syntax" in fnode.toxml()
 
+    def test_collect_skipped(self, testdir):
+        testdir.makepyfile("import py ; py.test.skip('xyz')")
+        result, dom = runandparse(testdir)
+        assert not result.ret 
+        node = dom.getElementsByTagName("testsuite")[0]
+        assert_attr(node, skips=1, tests=0)
+        tnode = node.getElementsByTagName("testcase")[0]
+        assert_attr(tnode, 
+            #classname="test_collect_error",
+            name="test_collect_skipped")
+        fnode = tnode.getElementsByTagName("skipped")[0]
+        assert_attr(fnode, message="collection skipped")
+
 class TestNonPython:
     def test_summing_simple(self, testdir):
         testdir.makeconftest("""



More information about the pytest-commit mailing list