mirror of https://github.com/python/cpython
asyncio.tasks: Make sure CoroWrapper.send proxies one argument correctly
Issue #21209.
This commit is contained in:
parent
ddbd2ee6e5
commit
021b27482e
|
@ -53,6 +53,8 @@ class CoroWrapper:
|
|||
# We use `*value` because of a bug in CPythons prior
|
||||
# to 3.4.1. See issue #21209 and test_yield_from_corowrapper
|
||||
# for details. This workaround should be removed in 3.5.0.
|
||||
if len(value) == 1:
|
||||
value = value[0]
|
||||
return self.gen.send(value)
|
||||
|
||||
def throw(self, exc):
|
||||
|
|
|
@ -1410,6 +1410,24 @@ class TaskTests(unittest.TestCase):
|
|||
finally:
|
||||
asyncio.tasks._DEBUG = old_debug
|
||||
|
||||
def test_yield_from_corowrapper_send(self):
|
||||
def foo():
|
||||
a = yield
|
||||
return a
|
||||
|
||||
def call(arg):
|
||||
cw = asyncio.tasks.CoroWrapper(foo(), foo)
|
||||
cw.send(None)
|
||||
try:
|
||||
cw.send(arg)
|
||||
except StopIteration as ex:
|
||||
return ex.args[0]
|
||||
else:
|
||||
raise AssertionError('StopIteration was expected')
|
||||
|
||||
self.assertEqual(call((1, 2)), (1, 2))
|
||||
self.assertEqual(call('spam'), 'spam')
|
||||
|
||||
|
||||
class GatherTestsBase:
|
||||
|
||||
|
|
Loading…
Reference in New Issue