diff options
author | Victor Stinner <vstinner@python.org> | 2023-09-03 21:37:15 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-03 21:37:15 (GMT) |
commit | 31c2945f143c6b80c837fcf09a5cfb85fea9ea4c (patch) | |
tree | df9d2918e92b8167db4bf66fe04c923d487e0977 /Lib/test/support/testresult.py | |
parent | c2ec174d243da5d2607dbf06c4451d0093ac40ba (diff) | |
download | cpython-31c2945f143c6b80c837fcf09a5cfb85fea9ea4c.zip cpython-31c2945f143c6b80c837fcf09a5cfb85fea9ea4c.tar.gz cpython-31c2945f143c6b80c837fcf09a5cfb85fea9ea4c.tar.bz2 |
gh-108834: regrtest reruns failed tests in subprocesses (#108839)
When using --rerun option, regrtest now re-runs failed tests
in verbose mode in fresh worker processes to have more
deterministic behavior. So it can write its final report even
if a test killed a worker progress.
Add --fail-rerun option to regrtest: exit with non-zero exit code
if a test failed pass passed when re-run in verbose mode (in a
fresh process). That's now more useful since tests can pass
when re-run in a fresh worker progress, whereas they failed
when run after other tests when tests are run sequentially.
Rename --verbose2 option (-w) to --rerun. Keep --verbose2 as a
deprecated alias.
Changes:
* Fix and enhance statistics in regrtest summary. Add "(filtered)"
when --match and/or --ignore options are used.
* Add RunTests class.
* Add TestResult.get_rerun_match_tests() method
* Rewrite code to serialize/deserialize worker arguments as JSON
using a new WorkerJob class.
* Fix stats when a test is run with --forever --rerun.
* If failed test names cannot be parsed, log a warning and don't
filter tests.
* test_regrtest.test_rerun_success() now uses a marker file, since
the test is re-run in a separated process.
* Add tests on normalize_test_name() function.
* Add test_success() and test_skip() tests to test_regrtest.
Diffstat (limited to 'Lib/test/support/testresult.py')
-rw-r--r-- | Lib/test/support/testresult.py | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/Lib/test/support/testresult.py b/Lib/test/support/testresult.py index 14474be..de23fdd 100644 --- a/Lib/test/support/testresult.py +++ b/Lib/test/support/testresult.py @@ -8,6 +8,7 @@ import sys import time import traceback import unittest +from test import support class RegressionTestResult(unittest.TextTestResult): USE_XML = False @@ -112,6 +113,8 @@ class RegressionTestResult(unittest.TextTestResult): def addFailure(self, test, err): self._add_result(test, True, failure=self.__makeErrorDict(*err)) super().addFailure(test, err) + if support.failfast: + self.stop() def addSkip(self, test, reason): self._add_result(test, skipped=reason) |