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))
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))
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))
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)
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)
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)
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))