diff options
author | Yury Selivanov <yselivanov@sprymix.com> | 2015-07-01 16:29:55 (GMT) |
---|---|---|
committer | Yury Selivanov <yselivanov@sprymix.com> | 2015-07-01 16:29:55 (GMT) |
commit | f27015255f899d3c36fb3c096fe1faa7b123d05b (patch) | |
tree | 31cf049598f0038ee9e0a80f51df085a200f1fe8 /Lib/test/test_coroutines.py | |
parent | d6e51560b3475447ab6c8babbf93c486c7b87772 (diff) | |
download | cpython-f27015255f899d3c36fb3c096fe1faa7b123d05b.zip cpython-f27015255f899d3c36fb3c096fe1faa7b123d05b.tar.gz cpython-f27015255f899d3c36fb3c096fe1faa7b123d05b.tar.bz2 |
Issue #24400: Add one more unittest for CoroutineType.__await__
Diffstat (limited to 'Lib/test/test_coroutines.py')
-rw-r--r-- | Lib/test/test_coroutines.py | 34 |
1 files changed, 34 insertions, 0 deletions
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): |