mirror of
https://github.com/python/cpython.git
synced 2025-07-16 07:45:20 +00:00
bpo-35942: Improve the error message if __fspath__ returns invalid types in path_converter (GH-11831)
The error message emitted when returning invalid types from __fspath__ in interfaces that allow passing PathLike objects has been improved and now it does explain the origin of the error.
This commit is contained in:
parent
ac28147e78
commit
09fbcd6085
3 changed files with 36 additions and 9 deletions
|
@ -3344,7 +3344,7 @@ class PathTConverterTests(unittest.TestCase):
|
|||
cleanup_fn(result)
|
||||
|
||||
with self.assertRaisesRegex(
|
||||
TypeError, 'should be string, bytes'):
|
||||
TypeError, 'to return str or bytes'):
|
||||
fn(int_fspath, *extra_args)
|
||||
|
||||
if allow_fd:
|
||||
|
@ -3357,6 +3357,23 @@ class PathTConverterTests(unittest.TestCase):
|
|||
'os.PathLike'):
|
||||
fn(fd, *extra_args)
|
||||
|
||||
def test_path_t_converter_and_custom_class(self):
|
||||
with self.assertRaisesRegex(
|
||||
TypeError,
|
||||
'__fspath__\(\) to return str or bytes, not int'
|
||||
):
|
||||
os.stat(FakePath(2))
|
||||
with self.assertRaisesRegex(
|
||||
TypeError,
|
||||
'__fspath__\(\) to return str or bytes, not float'
|
||||
):
|
||||
os.stat(FakePath(2.34))
|
||||
with self.assertRaisesRegex(
|
||||
TypeError,
|
||||
'__fspath__\(\) to return str or bytes, not object'
|
||||
):
|
||||
os.stat(FakePath(object()))
|
||||
|
||||
|
||||
@unittest.skipUnless(hasattr(os, 'get_blocking'),
|
||||
'needs os.get_blocking() and os.set_blocking()')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue