fix issue404 by more strict junitxml escape
This commit is contained in:
parent
305cbecb34
commit
e843b028e6
|
@ -1,3 +1,8 @@
|
|||
Unreleased
|
||||
-----------------------------------
|
||||
|
||||
- fix issue404 by always using the binary xml escape in the junitxml plugin
|
||||
|
||||
2.5.0
|
||||
-----------------------------------
|
||||
|
||||
|
|
|
@ -130,36 +130,36 @@ class LogXML(object):
|
|||
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 @@ class LogXML(object):
|
|||
|
||||
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"),
|
||||
|
|
|
@ -284,6 +284,19 @@ class TestPython:
|
|||
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 @@ def test_nullbyte_replace(testdir):
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue