1 new commit in pytest:

https://bitbucket.org/hpk42/pytest/commits/e629b41d0f58/
Changeset:   e629b41d0f58
User:        RonnyPfannschmidt
Date:        2013-12-13 10:28:23
Summary:     fix issue404 by more strict junitxml escape
Affected #:  3 files

diff -r 70dae16174e4797de84b2bbbcb099c026f59d459 -r 
e629b41d0f58f215347d34e18b48f63dba5310f5 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+Unreleased
+-----------------------------------
+
+- fix issue404 by always using the binary xml escape in the junitxml plugin
+
 2.5.0
 -----------------------------------
 

diff -r 70dae16174e4797de84b2bbbcb099c026f59d459 -r 
e629b41d0f58f215347d34e18b48f63dba5310f5 _pytest/junitxml.py
--- a/_pytest/junitxml.py
+++ b/_pytest/junitxml.py
@@ -130,36 +130,36 @@
             self.skipped += 1
         else:
             fail = Junit.failure(message="test failure")
-            fail.append(unicode(report.longrepr))
+            fail.append(bin_xml_escape(report.longrepr))
             self.append(fail)
             self.failed += 1
         self._write_captured_output(report)
 
     def append_collect_failure(self, report):
         #msg = str(report.longrepr.reprtraceback.extraline)
-        self.append(Junit.failure(unicode(report.longrepr),
+        self.append(Junit.failure(bin_xml_escape(report.longrepr),
                                   message="collection failure"))
         self.errors += 1
 
     def append_collect_skipped(self, report):
         #msg = str(report.longrepr.reprtraceback.extraline)
-        self.append(Junit.skipped(unicode(report.longrepr),
+        self.append(Junit.skipped(bin_xml_escape(report.longrepr),
                                   message="collection skipped"))
         self.skipped += 1
 
     def append_error(self, report):
-        self.append(Junit.error(unicode(report.longrepr),
+        self.append(Junit.error(bin_xml_escape(report.longrepr),
                                 message="test setup failure"))
         self.errors += 1
 
     def append_skipped(self, report):
         if hasattr(report, "wasxfail"):
-            self.append(Junit.skipped(unicode(report.wasxfail),
+            self.append(Junit.skipped(bin_xml_escape(report.wasxfail),
                                       message="expected test failure"))
         else:
             filename, lineno, skipreason = report.longrepr
             if skipreason.startswith("Skipped: "):
-                skipreason = skipreason[9:]
+                skipreason = bin_xml_escape(skipreason[9:])
             self.append(
                 Junit.skipped("%s:%s: %s" % report.longrepr,
                               type="pytest.skip",
@@ -193,7 +193,7 @@
 
     def pytest_internalerror(self, excrepr):
         self.errors += 1
-        data = py.xml.escape(excrepr)
+        data = bin_xml_escape(excrepr)
         self.tests.append(
             Junit.testcase(
                     Junit.error(data, message="internal error"),

diff -r 70dae16174e4797de84b2bbbcb099c026f59d459 -r 
e629b41d0f58f215347d34e18b48f63dba5310f5 testing/test_junitxml.py
--- a/testing/test_junitxml.py
+++ b/testing/test_junitxml.py
@@ -284,6 +284,19 @@
         if not sys.platform.startswith("java"):
             assert "hx" in fnode.toxml()
 
+    def test_assertion_binchars(self, testdir):
+        """this test did fail when the escaping wasnt strict"""
+        testdir.makepyfile("""
+
+            M1 = '\x01\x02\x03\x04'
+            M2 = '\x01\x02\x03\x05'
+
+            def test_str_compare():
+                assert M1 == M2
+            """)
+        result, dom = runandparse(testdir)
+        print dom.toxml()
+
     def test_pass_captures_stdout(self, testdir):
         testdir.makepyfile("""
             def test_pass():
@@ -392,7 +405,6 @@
     text = xmlf.read()
     assert '#x0' in text
 
-
 def test_invalid_xml_escape():
     # Test some more invalid xml chars, the full range should be
     # tested really but let's just thest the edges of the ranges

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.
_______________________________________________
pytest-commit mailing list
pytest-commit@python.org
https://mail.python.org/mailman/listinfo/pytest-commit

Reply via email to