(self)
| 599 | return result |
| 600 | |
| 601 | def run(self) -> None: |
| 602 | fail_fast = self.runtests.fail_fast |
| 603 | fail_env_changed = self.runtests.fail_env_changed |
| 604 | |
| 605 | self.start_workers() |
| 606 | |
| 607 | self.test_index = 0 |
| 608 | try: |
| 609 | while True: |
| 610 | item = self._get_result() |
| 611 | if item is None: |
| 612 | break |
| 613 | |
| 614 | result = self._process_result(item) |
| 615 | if result.must_stop(fail_fast, fail_env_changed): |
| 616 | break |
| 617 | except KeyboardInterrupt: |
| 618 | print() |
| 619 | self.results.interrupted = True |
| 620 | finally: |
| 621 | if self.timeout is not None: |
| 622 | faulthandler.cancel_dump_traceback_later() |
| 623 | |
| 624 | # Always ensure that all worker processes are no longer |
| 625 | # worker when we exit this function |
| 626 | self.pending.stop() |
| 627 | self.stop_workers() |
no test coverage detected