changeset: 96744:a9d38701536d branch: 3.5 parent: 96742:5d1e16be1af6 user: Yury Selivanov date: Wed Jul 01 12:29:55 2015 -0400 files: Lib/test/test_coroutines.py description: Issue #24400: Add one more unittest for CoroutineType.__await__ diff -r 5d1e16be1af6 -r a9d38701536d Lib/test/test_coroutines.py --- a/Lib/test/test_coroutines.py Wed Jul 01 11:31:13 2015 -0400 +++ b/Lib/test/test_coroutines.py Wed Jul 01 12:29:55 2015 -0400 @@ -519,6 +519,40 @@ 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):