from datetime import datetime import xml.etree.ElementTree as ET def junit(t): testsuites = ET.Element('testsuites') testsuite = ET.SubElement(testsuites, 'testsuite', id = "0", package = 'ghc', tests = str(t.total_tests), failures = str(len(t.unexpected_failures) + len(t.unexpected_stat_failures)), errors = str(len(t.framework_failures)), timestamp = datetime.now().isoformat()) for result, group in [('stat failure', t.unexpected_stat_failures), ('unexpected failure', t.unexpected_failures)]: for (directory, testname, reason, way) in group: testcase = ET.SubElement(testsuite, 'testcase', classname = testname, name = way) result = ET.SubElement(testcase, 'failure', type = result, message = reason) for (directory, testname, reason, way) in t.framework_failures: testcase = ET.SubElement(testsuite, 'testcase', classname = testname, name = way) result = ET.SubElement(testcase, 'error', type = "framework failure", message = reason) for (directory, testname, way) in t.expected_passes: testcase = ET.SubElement(testsuite, 'testcase', classname = testname, name = way) return ET.ElementTree(testsuites)