1
0
Fork 0
knot-resolver/tests/integration/deckard/ci/junit-compare.py
Daniel Baumann fbc604e215
Adding upstream version 5.7.5.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-21 13:56:17 +02:00

38 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python3
import sys
import xml.etree.ElementTree as xml
def parse_junit_xml(filename):
"""
Transform junit XML file into set of tuples:
(test description, file name, test result)
"""
results = set()
suite = xml.parse(filename).getroot().find("testsuite")
for case in suite:
if case.find("failure") is not None: # Because empty XML elements are falsey
results.add((case.get("name"), case.get("name").split("'")[1], "FAILED"))
elif case.find("skipped") is not None:
results.add((case.get("name"), case.get("name").split("'")[1], "SKIPPED"))
else:
results.add((case.get("name"), case.get("name").split("'")[1], "PASSED"))
return results
new = sys.argv[1]
old = sys.argv[2]
with open(sys.argv[3], encoding="utf-8") as f:
modified_tests = [line.strip() for line in f.readlines()]
test_diffs = parse_junit_xml(old) ^ parse_junit_xml(new)
errorneous_rpls = [diff[1] for diff in test_diffs
if diff[1] not in modified_tests]
if errorneous_rpls:
print('FAIL! Following tests changed their result without test modification:')
for rpl in sorted(set(errorneous_rpls)):
print(rpl)
sys.exit(1)