summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_asyncio
diff options
context:
space:
mode:
authorYury Selivanov <yselivanov@sprymix.com>2014-04-15 02:21:52 (GMT)
committerYury Selivanov <yselivanov@sprymix.com>2014-04-15 02:21:52 (GMT)
commitf15f7484bb2265ae46b227c9ddb2300958e93e3f (patch)
tree617c69451ed3609a48cff4d19966ec877386aabe /Lib/test/test_asyncio
parentcfdd0161ac72f9a6be00581eaef160791072c6ad (diff)
downloadcpython-f15f7484bb2265ae46b227c9ddb2300958e93e3f.zip
cpython-f15f7484bb2265ae46b227c9ddb2300958e93e3f.tar.gz
cpython-f15f7484bb2265ae46b227c9ddb2300958e93e3f.tar.bz2
asyncio.tasks: Fix CoroWrapper to workaround yield-from bug in CPython < 3.4.1
Closes issue #21209.
Diffstat (limited to 'Lib/test/test_asyncio')
-rw-r--r--Lib/test/test_asyncio/test_tasks.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py
index ced3431..45de8ac 100644
--- a/Lib/test/test_asyncio/test_tasks.py
+++ b/Lib/test/test_asyncio/test_tasks.py
@@ -1386,6 +1386,31 @@ class TaskTests(unittest.TestCase):
self.assertRaises(ValueError, self.loop.run_until_complete,
asyncio.wait([], loop=self.loop))
+ def test_yield_from_corowrapper(self):
+ old_debug = asyncio.tasks._DEBUG
+ asyncio.tasks._DEBUG = True
+ try:
+ @asyncio.coroutine
+ def t1():
+ return (yield from t2())
+
+ @asyncio.coroutine
+ def t2():
+ f = asyncio.Future(loop=self.loop)
+ asyncio.Task(t3(f), loop=self.loop)
+ return (yield from f)
+
+ @asyncio.coroutine
+ def t3(f):
+ f.set_result((1, 2, 3))
+
+ task = asyncio.Task(t1(), loop=self.loop)
+ val = self.loop.run_until_complete(task)
+ self.assertEqual(val, (1, 2, 3))
+ finally:
+ asyncio.tasks._DEBUG = old_debug
+
+
class GatherTestsBase:
def setUp(self):