summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYury Selivanov <yselivanov@sprymix.com>2015-07-01 16:29:55 (GMT)
committerYury Selivanov <yselivanov@sprymix.com>2015-07-01 16:29:55 (GMT)
commitf27015255f899d3c36fb3c096fe1faa7b123d05b (patch)
tree31cf049598f0038ee9e0a80f51df085a200f1fe8
parentd6e51560b3475447ab6c8babbf93c486c7b87772 (diff)
downloadcpython-f27015255f899d3c36fb3c096fe1faa7b123d05b.zip
cpython-f27015255f899d3c36fb3c096fe1faa7b123d05b.tar.gz
cpython-f27015255f899d3c36fb3c096fe1faa7b123d05b.tar.bz2
Issue #24400: Add one more unittest for CoroutineType.__await__
-rw-r--r--Lib/test/test_coroutines.py34
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):