From: Yury Selivanov Date: Wed, 1 Jul 2015 16:29:55 +0000 (-0400) Subject: Issue #24400: Add one more unittest for CoroutineType.__await__ X-Git-Tag: v3.5.0b3~23 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f27015255f899d3c36fb3c096fe1faa7b123d05b;p=thirdparty%2FPython%2Fcpython.git Issue #24400: Add one more unittest for CoroutineType.__await__ --- diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py index a84e27a0d503..3413a12d6f00 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):