From f27015255f899d3c36fb3c096fe1faa7b123d05b Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Wed, 1 Jul 2015 12:29:55 -0400 Subject: Issue #24400: Add one more unittest for CoroutineType.__await__ --- Lib/test/test_coroutines.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index a84e27a..3413a12 100644 --- a/Lib/test/test_coroutines.py +++ b/Lib/test/test_coroutines.py @@ -519,6 +519,40 @@ class CoroutineTest(unittest.TestCase): run_async(foo()) + def test_await_14(self): + class Wrapper: + # Forces the interpreter to use CoroutineType.__await__ + def __init__(self, coro): + assert coro.__class__ is types.CoroutineType + self.coro = coro + def __await__(self): + return self.coro.__await__() + + class FutureLike: + def __await__(self): + return (yield) + + class Marker(Exception): + pass + + async def coro1(): + try: + return await FutureLike() + except ZeroDivisionError: + raise Marker + async def coro2(): + return await Wrapper(coro1()) + + c = coro2() + c.send(None) + with self.assertRaisesRegex(StopIteration, 'spam'): + c.send('spam') + + c = coro2() + c.send(None) + with self.assertRaises(Marker): + c.throw(ZeroDivisionError) + def test_with_1(self): class Manager: def __init__(self, name): -- cgit v0.12