| 23 | |
| 24 | |
| 25 | class TestResults: |
| 26 | def __init__(self) -> None: |
| 27 | self.bad: TestList = [] |
| 28 | self.good: TestList = [] |
| 29 | self.rerun_bad: TestList = [] |
| 30 | self.skipped: TestList = [] |
| 31 | self.resource_denied: TestList = [] |
| 32 | self.env_changed: TestList = [] |
| 33 | self.run_no_tests: TestList = [] |
| 34 | self.rerun: TestList = [] |
| 35 | self.rerun_results: list[TestResult] = [] |
| 36 | |
| 37 | self.interrupted: bool = False |
| 38 | self.worker_bug: bool = False |
| 39 | self.test_times: list[tuple[float, TestName]] = [] |
| 40 | self.stats = TestStats() |
| 41 | # used by --junit-xml |
| 42 | self.testsuite_xml: list['Element'] = [] |
| 43 | # used by -T with -j |
| 44 | self.covered_lines: set[Location] = set() |
| 45 | |
| 46 | def is_all_good(self) -> bool: |
| 47 | return (not self.bad |
| 48 | and not self.skipped |
| 49 | and not self.interrupted |
| 50 | and not self.worker_bug) |
| 51 | |
| 52 | def get_executed(self) -> set[TestName]: |
| 53 | return (set(self.good) | set(self.bad) | set(self.skipped) |
| 54 | | set(self.resource_denied) | set(self.env_changed) |
| 55 | | set(self.run_no_tests)) |
| 56 | |
| 57 | def no_tests_run(self) -> bool: |
| 58 | return not any((self.good, self.bad, self.skipped, self.interrupted, |
| 59 | self.env_changed)) |
| 60 | |
| 61 | def get_state(self, fail_env_changed: bool) -> str: |
| 62 | state = [] |
| 63 | ansi = get_colors() |
| 64 | green = ansi.GREEN |
| 65 | red = ansi.BOLD_RED |
| 66 | reset = ansi.RESET |
| 67 | yellow = ansi.YELLOW |
| 68 | if self.bad: |
| 69 | state.append(f"{red}FAILURE{reset}") |
| 70 | elif fail_env_changed and self.env_changed: |
| 71 | state.append(f"{yellow}ENV CHANGED{reset}") |
| 72 | elif self.no_tests_run(): |
| 73 | state.append(f"{yellow}NO TESTS RAN{reset}") |
| 74 | |
| 75 | if self.interrupted: |
| 76 | state.append(f"{yellow}INTERRUPTED{reset}") |
| 77 | if self.worker_bug: |
| 78 | state.append(f"{red}WORKER BUG{reset}") |
| 79 | if not state: |
| 80 | state.append(f"{green}SUCCESS{reset}") |
| 81 | |
| 82 | return ', '.join(state) |
no outgoing calls