Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
During my work adding/fixing types for mypy to pass, I came accros the
test_runner
module, which needed a more thorough rework for mypy to be happy. This rework implies some changes in symbols that are technically public, and in the way the test runner is instantiated. I decided to extract this part to its own PR so that we can discuss with @gswifort and @CEXT-Dan if those changes seem OK.Problems observed
FileArgsTestRunner
andCmdlineArgsTestRunner
are instantiated intest_test_runner.py
even though they are still abstract classes: theirrun_tests
method is not implemented.getattr(self, "_test_args", ())
, where _test_args is not defined in the constructor.PytestFileArgsTestRunner
andPytestCmdlineArgsTestRunner
, where both concepts are tied together.This pull request replaces multiple inheritance by dependency injection (composition) in order to solve those problems.
To verify that the mypy errors have been correctly fixed, run on
main
(d545ba7) andrework-test-runner
(358da49):