mirror of
https://github.com/python/cpython.git
synced 2025-10-16 11:49:57 +00:00
bpo-29922: Improve error messages in 'async with' (GH-6352)
when __aenter__() or __aexit__() return non-awaitable object.
(cherry picked from commit a68f2f0578
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
b8fc2d6580
commit
fcd4e03e08
3 changed files with 36 additions and 4 deletions
|
@ -1255,7 +1255,9 @@ class CoroutineTest(unittest.TestCase):
|
|||
pass
|
||||
|
||||
with self.assertRaisesRegex(
|
||||
TypeError, "object int can't be used in 'await' expression"):
|
||||
TypeError,
|
||||
"'async with' received an object from __aenter__ "
|
||||
"that does not implement __await__: int"):
|
||||
# it's important that __aexit__ wasn't called
|
||||
run_async(foo())
|
||||
|
||||
|
@ -1275,7 +1277,9 @@ class CoroutineTest(unittest.TestCase):
|
|||
run_async(foo())
|
||||
except TypeError as exc:
|
||||
self.assertRegex(
|
||||
exc.args[0], "object int can't be used in 'await' expression")
|
||||
exc.args[0],
|
||||
"'async with' received an object from __aexit__ "
|
||||
"that does not implement __await__: int")
|
||||
self.assertTrue(exc.__context__ is not None)
|
||||
self.assertTrue(isinstance(exc.__context__, ZeroDivisionError))
|
||||
else:
|
||||
|
@ -1299,8 +1303,9 @@ class CoroutineTest(unittest.TestCase):
|
|||
|
||||
|
||||
with self.assertRaisesRegex(
|
||||
TypeError, "object int can't be used in 'await' expression"):
|
||||
|
||||
TypeError,
|
||||
"'async with' received an object from __aexit__ "
|
||||
"that does not implement __await__: int"):
|
||||
run_async(foo())
|
||||
|
||||
self.assertEqual(CNT, 1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue