Projet

Général

Profil

0007-add-merge-junit-results-script-8425.patch

Benjamin Dauvergne, 05 octobre 2015 21:19

Télécharger (2,02 ko)

Voir les différences:

Subject: [PATCH 7/8] add merge-junit-results script (#8425)

 merge-junit-results.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100755 merge-junit-results.py
merge-junit-results.py
1
#!/usr/bin/env python
2
#
3
#  Corey Goldberg, Dec 2012
4
#
5

  
6
import os
7
import sys
8
import xml.etree.ElementTree as ET
9

  
10

  
11
"""Merge multiple JUnit XML files into a single results file.
12
Output dumps to sdtdout.
13
example usage:
14
    $ python merge_junit_results.py results1.xml results2.xml > results.xml
15
"""
16

  
17

  
18
def main():
19
    args = sys.argv[1:]
20
    if not args:
21
        usage()
22
        sys.exit(2)
23
    if '-h' in args or '--help' in args:
24
        usage()
25
        sys.exit(2)
26
    merge_results(args[:])
27

  
28

  
29
def merge_results(xml_files):
30
    failures = 0
31
    tests = 0
32
    errors = 0
33
    time = 0.0
34
    cases = []
35

  
36
    for file_name in xml_files:
37
        tree = ET.parse(file_name)
38
        test_suite = tree.getroot()
39
        failures += int(test_suite.attrib['failures'])
40
        tests += int(test_suite.attrib['tests'])
41
        errors += int(test_suite.attrib['errors'])
42
        time += float(test_suite.attrib['time'])
43
        cases.append(test_suite.getchildren())
44

  
45
    new_root = ET.Element('testsuite')
46
    new_root.attrib['failures'] = '%s' % failures
47
    new_root.attrib['tests'] = '%s' % tests
48
    new_root.attrib['errors'] = '%s' % errors
49
    new_root.attrib['time'] = '%s' % time
50
    for case in cases:
51
        new_root.extend(case)
52
    new_tree = ET.ElementTree(new_root)
53
    ET.dump(new_tree)
54

  
55

  
56
def usage():
57
    this_file = os.path.basename(__file__)
58
    print 'Usage:  %s results1.xml results2.xml' % this_file
59

  
60

  
61
if __name__ == '__main__':
62
    main()
0
-