Example #1
0
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
    # intead.
    # XXX This only tests low unicode character points for now as
    #     there are some issues with the testing infrastructure for
    #     the higher ones.
    # XXX Testing 0xD (\r) is tricky as it overwrites the just written
    #     line in the output, so we skip it too.
    global unichr
    try:
        unichr(65)
    except NameError:
        unichr = chr
    invalid = (0x00, 0x1, 0xB, 0xC, 0xE, 0x19, 27, 0xD800, 0xDFFF, 0xFFFE, 0x0FFFF)  # issue #126  # , 0x110000)
    valid = (0x9, 0xA, 0x20)
    # 0xD, 0xD7FF, 0xE000, 0xFFFD, 0x10000, 0x10FFFF)

    from _pytest.junitxml import bin_xml_escape

    for i in invalid:
        got = bin_xml_escape(unichr(i)).uniobj
        if i <= 0xFF:
            expected = "#x%02X" % i
        else:
            expected = "#x%04X" % i
        assert got == expected
    for i in valid:
        assert chr(i) == bin_xml_escape(unichr(i)).uniobj
Example #2
0
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
    # intead.
    # XXX This only tests low unicode character points for now as
    #     there are some issues with the testing infrastructure for
    #     the higher ones.
    # XXX Testing 0xD (\r) is tricky as it overwrites the just written
    #     line in the output, so we skip it too.
    global unichr
    try:
        unichr(65)
    except NameError:
        unichr = chr
    invalid = (0x00, 0x1, 0xB, 0xC, 0xE, 0x19, 27,  # issue #126
               0xD800, 0xDFFF, 0xFFFE, 0x0FFFF)  # , 0x110000)
    valid = (0x9, 0xA, 0x20, )
    # 0xD, 0xD7FF, 0xE000, 0xFFFD, 0x10000, 0x10FFFF)

    from _pytest.junitxml import bin_xml_escape

    for i in invalid:
        got = bin_xml_escape(unichr(i)).uniobj
        if i <= 0xFF:
            expected = '#x%02X' % i
        else:
            expected = '#x%04X' % i
        assert got == expected
    for i in valid:
        assert chr(i) == bin_xml_escape(unichr(i)).uniobj
Example #3
0
 def _write_content(self, report: TestReport, content: str,
                    jheader: str) -> None:
     if content == "":
         return
     tag = ET.Element(jheader)
     tag.text = bin_xml_escape(content)
     self.append(tag)
Example #4
0
 def append_rerun(self, reporter: _NodeReporter,
                  report: TestReport) -> None:
     if hasattr(report, "wasxfail"):
         reporter._add_simple("skipped",
                              "xfail-marked test passes unexpectedly")
     else:
         assert report.longrepr is not None
         reprcrash: Optional[ReprFileLocation] = getattr(
             report.longrepr, "reprcrash", None)
         if reprcrash is not None:
             message = reprcrash.message
         else:
             message = str(report.longrepr)
         message = bin_xml_escape(message)
         reporter._add_simple("rerun", message, str(report.longrepr))
 def record_testreport(self, testreport):
     assert not self.testcase
     names = mangle_test_address(testreport.nodeid)
     classnames = names[:-1]
     if self.xml.prefix:
         classnames.insert(0, self.xml.prefix)
     attrs = {
         "classname": ".".join(classnames),
         "name": bin_xml_escape(names[-1]),
         "file": testreport.location[0],
     }
     if testreport.location[1] is not None:
         attrs["line"] = testreport.location[1]
     if hasattr(testreport, "url"):
         attrs["url"] = testreport.url
     self.attrs = attrs