[Lldb-commits] [lldb] [test] Switch LLDB API tests from vendored unittest2 to unittest (PR #79945)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Tue Jan 30 01:27:35 PST 2024
================
@@ -86,20 +86,45 @@ def execute(self, test, litConfig):
if timeoutInfo:
return lit.Test.TIMEOUT, output
- # Parse the dotest output from stderr.
- result_regex = r"\((\d+) passes, (\d+) failures, (\d+) errors, (\d+) skipped, (\d+) expected failures, (\d+) unexpected successes\)"
- results = re.search(result_regex, err)
+ # Parse the dotest output from stderr. First get the # of total tests, in order to infer the # of passes.
+ # Example: "Ran 5 tests in 0.042s"
+ num_ran_regex = r"^Ran (\d+) tests? in "
+ num_ran_results = re.search(num_ran_regex, err, re.MULTILINE)
+
+ # If parsing fails mark this test as unresolved.
+ if not num_ran_results:
+ return lit.Test.UNRESOLVED, output
+ num_ran = int(num_ran_results.group(1))
+
+ # Then look for a detailed summary, which is OK or FAILED followed by optional details.
+ # Example: "OK (skipped=1, expected failures=1)"
+ # Example: "FAILED (failures=3)"
+ # Example: "OK"
+ result_regex = r"^(?:OK|FAILED)(?: \((.*)\))?$"
+ results = re.search(result_regex, err, re.MULTILINE)
# If parsing fails mark this test as unresolved.
if not results:
return lit.Test.UNRESOLVED, output
- passes = int(results.group(1))
- failures = int(results.group(2))
- errors = int(results.group(3))
- skipped = int(results.group(4))
- expected_failures = int(results.group(5))
- unexpected_successes = int(results.group(6))
+ details = results.group(1)
+ parsed_details = {}
+ if details:
+ for detail in details.split(", "):
+ detail_parts = detail.split("=")
+ if len(detail_parts) != 2:
+ return lit.Test.UNRESOLVED, output
+ parsed_details[detail_parts[0]] = int(detail_parts[1])
+
+ failures = parsed_details.get("failures", 0)
----------------
DavidSpickett wrote:
Could use `defaultdict(int)` (https://docs.python.org/3/library/collections.html#collections.defaultdict) or https://docs.python.org/3/library/stdtypes.html#dict.setdefault here.
https://github.com/llvm/llvm-project/pull/79945
More information about the lldb-commits
mailing list