Issue #24400: Add one more unittest for CoroutineType.__await__

This commit is contained in:
Yury Selivanov 2015-07-01 12:29:55 -04:00
parent d6e51560b3
commit f27015255f
1 changed files with 34 additions and 0 deletions

View File

@ -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):