summaryrefslogtreecommitdiff
path: root/testsuite/driver/junit.py
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/driver/junit.py')
-rw-r--r--testsuite/driver/junit.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/testsuite/driver/junit.py b/testsuite/driver/junit.py
new file mode 100644
index 0000000000..f2dbebb96a
--- /dev/null
+++ b/testsuite/driver/junit.py
@@ -0,0 +1,38 @@
+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 res_type, 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 = res_type,
+ 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)
+