Commits

Ronny Pfannschmidt  committed cea3b86

testrunner: add a junitxml merging script

  • Participants
  • Parent commits 3bbe478

Comments (0)

Files changed (1)

File testrunner/junitmerge.py

+"""
+simple scrpt for junitxml file merging
+"""
+
+from lxml.etree import parse, Element, tostring
+from collections import defaultdict
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--out')
+parser.add_argument('path', nargs='...')
+
+opts = parser.parse_args()
+
+files = []
+
+for path in opts.path:
+    files.append(parse(path))
+
+
+accum = defaultdict(int)
+children = []
+
+for item in files:
+    root = item.getroot()
+    for key, value in root.attrib.items():
+        if not value:
+            continue
+        value = float(value) if '.' in value else int(value)
+        accum[key] += value
+    children.extend(root)
+
+
+
+
+assert len(children) == sum(accum[x] for x in 'tests errors skips'.split())
+
+children.sort(key=lambda x:(x.attrib['classname'], x.attrib['name']))
+
+
+
+new = Element('testsuite', dict((k, str(v)) for k, v in accum.items()))
+new.extend(children)
+
+data = tostring(new)
+
+with open(opts.out, 'w') as fp:
+    fp.write(data)
+