Skip to content

Commit 06eaf40

Browse files
gh-71253: Match _io exception in _pyio (gh-133985)
Test was only testing _io, expanded to cover _pyio. Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
1 parent 84d5f8d commit 06eaf40

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

Lib/_pyio.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1563,7 +1563,8 @@ def __init__(self, file, mode='r', closefd=True, opener=None):
15631563
if not isinstance(fd, int):
15641564
raise TypeError('expected integer from opener')
15651565
if fd < 0:
1566-
raise OSError('Negative file descriptor')
1566+
# bpo-27066: Raise a ValueError for bad value.
1567+
raise ValueError(f'opener returned {fd}')
15671568
owned_fd = fd
15681569
if not noinherit_flag:
15691570
os.set_inheritable(fd, False)

Lib/test/test_io.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -918,15 +918,15 @@ def test_bad_opener_negative_1(self):
918918
def badopener(fname, flags):
919919
return -1
920920
with self.assertRaises(ValueError) as cm:
921-
open('non-existent', 'r', opener=badopener)
921+
self.open('non-existent', 'r', opener=badopener)
922922
self.assertEqual(str(cm.exception), 'opener returned -1')
923923

924924
def test_bad_opener_other_negative(self):
925925
# Issue #27066.
926926
def badopener(fname, flags):
927927
return -2
928928
with self.assertRaises(ValueError) as cm:
929-
open('non-existent', 'r', opener=badopener)
929+
self.open('non-existent', 'r', opener=badopener)
930930
self.assertEqual(str(cm.exception), 'opener returned -2')
931931

932932
def test_opener_invalid_fd(self):
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Raise :exc:`ValueError` in :func:`open` if *opener* returns a negative
2+
file-descriptor in the Python implementation of :mod:`io` to match the
3+
C implementation.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy