def get_run_result(self, log: str) -> RunResult: statements = -1 missing = -1 coverage = -1.0 failed = -1 passed = -1 skipped = -1 warnings = -1 error = -1 time = -1.0 matches = re.search(r"Ran ([0-9]+) tests in ([0-9.]+)s", log) if matches: ran = int(matches.group(1)) if matches.group(1) else 0 time = float(matches.group(2)) if matches.group(2) else 0.0 passed = ran matches = re.search(r"failures=([0-9]+)", log) if matches: failed = int(matches.group(1)) if matches.group(1) else 0 passed -= failed matches = re.search(r"errors=([0-9]+)", log) if matches: error = int(matches.group(1)) if matches.group(1) else 0 passed -= error matches = re.search(r"skipped=([0-9]+)", log) if matches: skipped = int(matches.group(1)) if matches.group(1) else 0 passed -= skipped matches = re.search(r"unexpected successes=([0-9]+)", log) if matches: unexp_successes = int(matches.group(1)) if matches.group(1) else 0 passed -= unexp_successes matches = re.search( r"TOTAL\s+" r"([0-9]+)\s+" r"([0-9]+)\s +" r"([0-9]+%)+", log) if matches: statements = int(matches.group(1)) if matches.group(1) else 0 missing = int(matches.group(2)) if matches.group(1) else 0 coverage = float( matches.group(3)[:-1]) if matches.group(3) else 0.0 result = RunResult( statements=statements, missing=missing, coverage=coverage, failed=failed, passed=passed, skipped=skipped, warnings=warnings, error=error, time=time, runner="nose2", ) return result
def test_get_passed_result_fail(self): self.assertEqual(RunResult(runner="pytest"), self._dummy_runner.get_run_result(""))
def get_run_result(self, log: str) -> RunResult: statements = -1 missing = -1 coverage = -1.0 failed = -1 passed = -1 skipped = -1 warnings = -1 error = -1 time = -1.0 matches = re.search( r"[=]+ (([0-9]+) failed, )?" r"([0-9]+) passed" r"(, ([0-9]+) skipped)?" r"(, ([0-9]+) warnings)?" r"(, ([0-9]+) error)?" r" in ([0-9.]+) seconds", log, ) if matches: failed = int(matches.group(2)) if matches.group(2) else 0 passed = int(matches.group(3)) if matches.group(3) else 0 skipped = int(matches.group(5)) if matches.group(5) else 0 warnings = int(matches.group(7)) if matches.group(7) else 0 error = int(matches.group(9)) if matches.group(9) else 0 time = float(matches.group(10)) if matches.group(10) else 0.0 matches = re.search( r"TOTAL\s+" r"([0-9]+)\s+" r"([0-9]+)\s+" r"(([0-9]+)\s+([0-9]+)\s+)?" r"([0-9]+%)", log, ) if matches: statements = int(matches.group(1)) if matches.group(1) else 0 missing = int(matches.group(2)) if matches.group(2) else 0 coverage = float( matches.group(6)[:-1]) if matches.group(6) else 0.0 else: matches = re.search( r".py\s+" r"([0-9]+)\s+" r"([0-9]+)\s+" r"(([0-9]+)\s+([0-9]+)\s+)?" r"([0-9]+%)", log, ) if matches: statements = int(matches.group(1)) if matches.group(1) else 0 missing = int(matches.group(2)) if matches.group(2) else 0 coverage = (float(matches.group(6)[:-1]) if matches.group(6) else 0.0) result = RunResult( statements=statements, missing=missing, coverage=coverage, failed=failed, passed=passed, skipped=skipped, warnings=warnings, error=error, time=time, runner="pytest", ) return result