Ejemplo n.º 1
0
    def test_add_success(self):
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        xunit_result = xunit.XUnitResult()
        xunit_result.render(self.test_result, self.job)
        xunit_output = self.job.config.get("job.run.result.xunit.output")
        with open(xunit_output, "rb") as fp:
            xml = fp.read()
        try:
            dom = minidom.parseString(xml)
        except Exception as details:
            raise ParseXMLError(
                f"Error parsing XML: '{details}'.\nXML Contents:\n{xml}")
        self.assertTrue(dom)

        els = dom.getElementsByTagName("testsuite")
        self.assertEqual(len(els), 1)
        self.assertEqual(els[0].attributes["time"].value, "678.237")

        els = dom.getElementsByTagName("testcase")
        self.assertEqual(len(els), 1)
        self.assertEqual(els[0].attributes["time"].value, "678.237")

        junit_xsd = os.path.abspath(
            os.path.join(
                os.path.dirname(os.path.dirname(__file__)),
                os.path.pardir,
                ".data",
                "jenkins-junit.xsd",
            ))
        xml_schema = xmlschema.XMLSchema(junit_xsd)
        self.assertTrue(xml_schema.is_valid(xunit_output))
Ejemplo n.º 2
0
    def test_add_success(self):
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        xunit_result = xunit.XUnitResult()
        xunit_result.render(self.test_result, self.job)
        with open(self.job.args.xunit_output, 'rb') as fp:
            xml = fp.read()
        try:
            dom = minidom.parseString(xml)
        except Exception as details:
            raise ParseXMLError("Error parsing XML: '%s'.\nXML Contents:\n%s" %
                                (details, xml))
        self.assertTrue(dom)

        els = dom.getElementsByTagName('testsuite')
        self.assertEqual(len(els), 1)
        self.assertEqual(els[0].attributes['time'].value, '678.237')

        els = dom.getElementsByTagName('testcase')
        self.assertEqual(len(els), 1)
        self.assertEqual(els[0].attributes['time'].value, '678.237')

        junit_xsd = os.path.abspath(
            os.path.join(os.path.dirname(__file__), os.path.pardir, ".data",
                         'jenkins-junit.xsd'))
        xml_schema = xmlschema.XMLSchema(junit_xsd)
        self.assertTrue(xml_schema.is_valid(self.job.args.xunit_output))
Ejemplo n.º 3
0
    def test_add_success(self):
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        xunit_result = xunit.XUnitResult()
        xunit_result.render(self.test_result, self.job)
        with open(self.job.args.xunit_output, 'rb') as fp:
            xml = fp.read()
        try:
            dom = minidom.parseString(xml)
        except Exception as details:
            raise ParseXMLError("Error parsing XML: '%s'.\nXML Contents:\n%s" %
                                (details, xml))
        self.assertTrue(dom)

        els = dom.getElementsByTagName('testsuite')
        self.assertEqual(len(els), 1)
        self.assertEqual(els[0].attributes['time'].value, '678.237')

        els = dom.getElementsByTagName('testcase')
        self.assertEqual(len(els), 1)
        self.assertEqual(els[0].attributes['time'].value, '678.237')

        junit_xsd = os.path.abspath(
            os.path.join(os.path.dirname(__file__), os.path.pardir, ".data",
                         'jenkins-junit.xsd'))
        with open(junit_xsd, 'r') as f:
            xmlschema = etree.XMLSchema(etree.parse(f))  # pylint: disable=I1101
        # pylint: disable=I1101
        self.assertTrue(
            xmlschema.validate(etree.parse(BytesIO(xml))),
            "Failed to validate against %s, content:\n%s\nerror log:\n%s" %
            (junit_xsd, xml, xmlschema.error_log))
Ejemplo n.º 4
0
 def test_max_test_log_size(self):
     log = tempfile.NamedTemporaryFile(dir=self.tmpdir, delete=False)
     log_content = b"1234567890" * 100
     log_content += b"this should not be present" + b"0987654321" * 100
     log.write(log_content)
     log_path = log.name
     log.close()
     self.test1._Test__status = "ERROR"
     self.test1._Test__logfile = log_path
     self.test_result.start_test(self.test1)
     self.test_result.end_test(self.test1.get_state())
     self.test_result.end_tests()
     xunit_result = xunit.XUnitResult()
     xunit_result.render(self.test_result, self.job)
     with open(self.job.args.xunit_output, 'rb') as fp:
         unlimited = fp.read()
     self.job.args.xunit_max_test_log_chars = 10
     xunit_result.render(self.test_result, self.job)
     with open(self.job.args.xunit_output, 'rb') as fp:
         limited = fp.read()
     self.assertLess(
         len(limited),
         len(unlimited) - 500,
         "Length of xunit limitted to 10 chars was greater "
         "than (unlimited - 500). Unlimited output:\n%s\n\n"
         "Limited output:\n%s" % (unlimited, limited))
     self.assertIn(b"this should not be present", unlimited)
     self.assertNotIn(b"this should not be present", limited)
     self.assertIn(b"1234567890", unlimited)
     self.assertNotIn(b"1234567890", limited)
     self.assertIn(b"12345", limited)
     self.assertIn(b"0987654321", unlimited)
     self.assertNotIn(b"0987654321", limited)
     self.assertIn(b"54321", limited)
Ejemplo n.º 5
0
    def test_max_test_log_size(self):
        def get_system_out(out):
            return out[out.find(b"<system-out>"):out.find(b"<system-out/>")]

        log = tempfile.NamedTemporaryFile(dir=self.tmpdir.name, delete=False)
        log_content = b"1234567890" * 100
        log_content += b"this should not be present" + b"0987654321" * 100
        log.write(log_content)
        log_path = log.name
        log.close()
        self.test1._Test__status = "ERROR"
        self.test1._Test__logfile = log_path
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        xunit_result = xunit.XUnitResult()
        # setting the default value
        self.job.config["job.run.result.xunit.max_test_log_chars"] = 100000
        xunit_result.render(self.test_result, self.job)
        xunit_output = self.job.config.get("job.run.result.xunit.output")
        with open(xunit_output, "rb") as fp:
            unlimited = fp.read()
        # setting a small value
        self.job.config["job.run.result.xunit.max_test_log_chars"] = 10
        xunit_result.render(self.test_result, self.job)
        with open(xunit_output, "rb") as fp:
            limited = fp.read()
        # back to the default value
        self.job.config["job.run.result.xunit.max_test_log_chars"] = 100000
        xunit_result.render(self.test_result, self.job)
        with open(xunit_output, "rb") as fp:
            limited_but_fits = fp.read()
        self.assertLess(
            len(limited),
            len(unlimited) - 500,
            (f"Length of xunit limited to 10 chars was greater "
             f"than (unlimited - 500). "
             f"Unlimited output:\n{unlimited}\n\n"
             f"Limited output:\n{limited}"),
        )
        unlimited_output = get_system_out(unlimited)
        self.assertIn(log_content, unlimited_output)
        self.assertEqual(unlimited_output, get_system_out(limited_but_fits))
        self.assertIn(b"this should not be present", unlimited)
        self.assertNotIn(b"this should not be present", limited)
        self.assertIn(b"1234567890", unlimited)
        self.assertNotIn(b"1234567890", limited)
        self.assertIn(b"12345", limited)
        self.assertIn(b"0987654321", unlimited)
        self.assertNotIn(b"0987654321", limited)
        self.assertIn(b"54321", limited)
Ejemplo n.º 6
0
 def test_max_test_log_size(self):
     def get_system_out(out):
         return out[out.find(b"<system-out>"):out.find(b"<system-out/>")]
     log = tempfile.NamedTemporaryFile(dir=self.tmpdir.name, delete=False)
     log_content = b"1234567890" * 100
     log_content += b"this should not be present" + b"0987654321" * 100
     log.write(log_content)
     log_path = log.name
     log.close()
     self.test1._Test__status = "ERROR"
     self.test1._Test__logfile = log_path
     self.test_result.start_test(self.test1)
     self.test_result.end_test(self.test1.get_state())
     self.test_result.end_tests()
     xunit_result = xunit.XUnitResult()
     xunit_result.render(self.test_result, self.job)
     with open(self.job.config.get('xunit_output'), 'rb') as fp:
         unlimited = fp.read()
     self.job.config['xunit_max_test_log_chars'] = 10
     xunit_result.render(self.test_result, self.job)
     with open(self.job.config.get('xunit_output'), 'rb') as fp:
         limited = fp.read()
     self.job.config['xunit_max_test_log_chars'] = 100000
     xunit_result.render(self.test_result, self.job)
     with open(self.job.config.get('xunit_output'), 'rb') as fp:
         limited_but_fits = fp.read()
     self.assertLess(len(limited), len(unlimited) - 500,
                     "Length of xunit limitted to 10 chars was greater "
                     "than (unlimited - 500). Unlimited output:\n%s\n\n"
                     "Limited output:\n%s" % (unlimited, limited))
     unlimited_output = get_system_out(unlimited)
     self.assertIn(log_content, unlimited_output)
     self.assertEqual(unlimited_output, get_system_out(limited_but_fits))
     self.assertIn(b"this should not be present", unlimited)
     self.assertNotIn(b"this should not be present", limited)
     self.assertIn(b"1234567890", unlimited)
     self.assertNotIn(b"1234567890", limited)
     self.assertIn(b"12345", limited)
     self.assertIn(b"0987654321", unlimited)
     self.assertNotIn(b"0987654321", limited)
     self.assertIn(b"54321", limited)
Ejemplo n.º 7
0
    def testAddSuccess(self):
        self.test_result.start_test(self.test1)
        self.test_result.end_test(self.test1.get_state())
        self.test_result.end_tests()
        xunit_result = xunit.XUnitResult()
        xunit_result.render(self.test_result, self.job)
        with open(self.job.args.xunit_output) as fp:
            xml = fp.read()
        try:
            dom = minidom.parseString(xml)
        except Exception as details:
            raise ParseXMLError("Error parsing XML: '%s'.\nXML Contents:\n%s" % (details, xml))
        self.assertTrue(dom)
        els = dom.getElementsByTagName('testcase')
        self.assertEqual(len(els), 1)

        with open(self.junit_schema_path, 'r') as f:
            xmlschema = etree.XMLSchema(etree.parse(f))
        self.assertTrue(xmlschema.validate(etree.parse(StringIO(xml))),
                        "Failed to validate against %s, content:\n%s" %
                        (self.junit_schema_path, xml))