GeezerVison is showing github.com — gh-138013: Remove `test_io` load_tests namespace manipulation by cmaloney · Pull Request #138366 · python/cpython
Conversation
cmaloney
commented
Sep 2, 2025
•
edited by bedevere-app
Bot
Loading
Uh oh!
There was an error while loading. Please reload this page.
Reduce what happens in load_tests so that the next change, moving the Buffered* tests to test_bufferdio is purely mechanical movement and updating imports.
This adds two classes, one per I/O implementation, to act as dispatch to the implementation-specific mocks as well as module members. Previously the mappings CTestCase and PyTestCase provide were injected directly during load_tests.
CTestCase and PyTestCase inherit from unittest.TestCase so when the split happens default test discovery will work for the classes in test_bufferedio. test_general keeps a manual test list for this refactoring; some of the tests (ex. ProtocolsTest) aren't currently run and fixing that + helpers to not be picked up as tests is out of my current scope.
CTestCase and PyTestCase have an io class member which points to the implementation meaning that can be removed from individual test cases which now inherit from them.
Tested locally with ./python -m test test_io -uall,walltime,largefile,extralargefile -M16G -j8 -v
- Could this get
skip news as its a test-only change?
- Could buildbots be run against this? Worried there are lots of platform-specific cases in these test cases and would rather proactively debug/fix than reactively (Ex. 4 tests are skipped for me on my 64 bit Linux box because: "only run in 32-bit address space" and "only when utf-8 mode is disabled")
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Reduce what happens in `load_tests` so that the next change,
moving the `Buffered*` tests to `test_bufferdio` is purely mechanical
movement and updating imports.
This adds two classes, one per I/O implementation, to act as dispatch to
the implementation-specific mocks as well as module members. Previously
the mappings CTestCase and PyTestCase provide were injected directly
during `load_tests`.
CTestCase and PyTestCase inherit from `unittest.TestCase` so when the
split happens default test discovery will work for the classes in
`test_bufferedio`. `test_general` keeps a manual test list for this
refactoring; some of the tests (ex. `ProtocolsTest`) aren't currently
run and fixing that + helpers to not be picked up is out of my current
scope.
CTestCase and PyTestCase have an `io` class member which points to the
implementation meaning that can be removed from individual test cases
which now inherit from them.
This code is picking up `MockRawIO` which is defined globally in the
module but these should use the mock specific to the I/O implementation
being tested.
cmaloney
commented
Sep 2, 2025
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
|
Added another commit to fix a gh-133982 issue I found while testing out the split. There are a number of test classes defined inside specific test cases that were referring to MockRawIO directly rather than self.MockRawIO
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Could this get skip news as its a test-only change?
Done.
Could buildbots be run against this?
Done.
|
cmaloney reacted with thumbs up emoji
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
./python -m test test_io --list-cases output is unchanged with this change.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Remove unnecessary pass through self
Co-authored-by: Victor Stinner <[email protected]>
|
One bot failure buildbot/AMD64 Windows 11 Refleaks PR in test_remote_pdb which looks independent (Code this PR doesn’t touch), so I think this is good to go once the suggestion application finishes in Github actions bots
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
cmaloney reacted with hooray emoji
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
lkollar
pushed a commit
to lkollar/cpython
that referenced
this pull request
Sep 9, 2025
…ython#138366)
Reduce what happens in `load_tests` so that the next change,
moving the `Buffered*` tests to `test_bufferdio` is purely mechanical
movement and updating imports.
This adds two classes, one per I/O implementation, to act as dispatch to
the implementation-specific mocks as well as module members. Previously
the mappings CTestCase and PyTestCase provide were injected directly
during `load_tests`.
CTestCase and PyTestCase inherit from `unittest.TestCase` so when the
split happens default test discovery will work for the classes in
`test_bufferedio`. `test_general` keeps a manual test list for this
refactoring; some of the tests (ex. `ProtocolsTest`) aren't currently
run and fixing that + helpers to not be picked up is out of my current
scope.
CTestCase and PyTestCase have an `io` class member which points to the
implementation meaning that can be removed from individual test cases
which now inherit from them.
This code is picking up `MockRawIO` which is defined globally in the
module but these should use the mock specific to the I/O implementation
being tested.
Co-authored-by: Victor Stinner <[email protected]>
Reviewers
vstinner
vstinner approved these changes
+1 more reviewer
auvipy
auvipy approved these changes
Reviewers whose approvals may not affect merge requirements
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.
|