diff --git a/avocado/core/xunit.py b/avocado/core/xunit.py index e1dd7e82326dfe5fb4810281125e2798f7f3d27e..2d850296495f4a5519a3bcb81461d7843574928d 100644 --- a/avocado/core/xunit.py +++ b/avocado/core/xunit.py @@ -16,6 +16,7 @@ import datetime import logging +import string from xml.sax.saxutils import quoteattr from .result import TestResult @@ -24,6 +25,9 @@ from .result import TestResult # We use a subset of the XML format defined in this URL: # https://svn.jenkins-ci.org/trunk/hudson/dtkit/dtkit-format/dtkit-junit-model/src/main/resources/com/thalesgroup/dtkit/junit/model/xsd/junit-4.xsd +PRINTABLE = string.ascii_letters + string.digits + string.punctuation + '\n\r ' + + class XmlResult(object): """ @@ -34,16 +38,14 @@ class XmlResult(object): self.xml = [''] def _escape_attr(self, attrib): + attrib = ''.join(_ if _ in PRINTABLE else "\\x%02x" % ord(_) + for _ in str(attrib)) return quoteattr(attrib) def _escape_cdata(self, cdata): - try: - return cdata.replace(']]>', ']]>]]>', ']]>]]>', ']]>]]>