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).