Commit 5f5bcd51 authored by norvell's avatar norvell
Browse files

Merge branch 'ci/parse-mld-xml' into 'main'

[BASOP CI] Adding MLD parser based on junit report from @bohmr

See merge request !1307
parents ccdf8cb5 093f6396
Loading
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
#!/usr/bin/env python3

import argparse
from xml.etree import ElementTree

"""
Parse a junit report and create a MLD summary report.
"""

# Main routine
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Parse a junit report and create a MLD summary report.')
    parser.add_argument('xml_report',type=str,help='XML junit report input file, e.g. report-junit.xml')
    parser.add_argument('csv_file',type=str,help='Output CSV file, e.g. mld.csv')
    args = parser.parse_args()
    xml_report = args.xml_report
    csv_file   = args.csv_file
    
    mld = {}

    tree = ElementTree.parse(xml_report)

    testsuite = tree.find(".//testsuite")
    print(f"Found testsuite with {testsuite.get('tests')} tests and {testsuite.get('failures')} failures.")

    testcases = tree.findall(".//testcase")

    with open(csv_file,'w') as outfile:
        for testcase in testcases:
            failure = testcase.find(".//failure")
            if failure is not None:
                system_out = testcase.find(".//system-out")
                for line in system_out.text.split('\n'):
                    if line.startswith('MLD:'):
                        mld_val = float(line.split()[1])
                        fulltestname = testcase.get('file') + "::" + testcase.get('name')
                        mld[fulltestname] = mld_val
                        outfile.write(fulltestname + ';' + str(mld_val)+'\n')