gh-94808: add test coversage for PyFile_FromFd #138866
Closed
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.
gh-94808: add test coversage for PyFile_FromFd
What I fixed
• Corrected PyFile_FromFd in Objects/fileobject.c to accept optional NULL strings for encoding, errors, and newline by switching the call format to use optional string specifiers:
• was "isisssO"
• now "isizzzO"
This fixes the bug where passing NULL crashed or misrouted arguments.
Unit tests added
• Extended Lib/test/test_capi/test_file.py:
• Added coverage for default buffering with buffering=-1:
◦ "rb" returns a _io.BufferedReader
◦ "r" returns a _io.TextIOWrapper
• Added a closefd=True behavior test (test_pyfile_fromfd_closefd) that ensures the underlying fd is closed when the returned object is closed (verifies EBADF on a second os.close).