INNER CODE UNIT · Python
read_results
alper-han/CrossMacro · scripts/ci/run-tests.py:73
def read_results(path):
document = ET.parse(path)
counters = document.find(".//{*}ResultSummary/{*}Counters")
if counters is None:
raise ValueError("TRX has no test counters")
values = {name: int(counters.attrib[name]) for name in ("total", "executed", "passed", "failed", "notExecuted")}
# VSTest/xUnit may leave Counters.notExecuted at zero for skipped facts.
# The individual results retain their actual NotExecuted outcomes.
results = document.findall("./{*}Results/{*}UnitTestResult")
values["notExecuted"] = sum(result.get("outcome") == "NotExecuted" for result in results)
if len(results) != values["total"]:
raise ValueError("TRX is missing individual test results")
for counter, outcome in (("passed", "Passed"), ("failed", "Failed")):
if values[counter] != sum(result.get("outcome") == outcome for result in results):
raise ValueError("TRX counters disagree with individual results")
if values["executed"] <= 0:
raise ValueError("No tests executed")
if any(value < 0 for value in values.values()) or values["passed"] + values["failed"] != values["executed"] or values["executed"] + values["notExecuted"] != values["total"]: