mirror of
https://github.com/python/cpython.git
synced 2025-09-18 22:50:26 +00:00
asyncio.tasks: Make sure CoroWrapper.send proxies one argument correctly
Issue #21209.
This commit is contained in:
parent
809f90f369
commit
09cc169a03
2 changed files with 20 additions and 0 deletions
|
@ -53,6 +53,8 @@ class CoroWrapper:
|
||||||
# We use `*value` because of a bug in CPythons prior
|
# We use `*value` because of a bug in CPythons prior
|
||||||
# to 3.4.1. See issue #21209 and test_yield_from_corowrapper
|
# to 3.4.1. See issue #21209 and test_yield_from_corowrapper
|
||||||
# for details. This workaround should be removed in 3.5.0.
|
# for details. This workaround should be removed in 3.5.0.
|
||||||
|
if len(value) == 1:
|
||||||
|
value = value[0]
|
||||||
return self.gen.send(value)
|
return self.gen.send(value)
|
||||||
|
|
||||||
def throw(self, exc):
|
def throw(self, exc):
|
||||||
|
|
|
@ -1410,6 +1410,24 @@ class TaskTests(unittest.TestCase):
|
||||||
finally:
|
finally:
|
||||||
asyncio.tasks._DEBUG = old_debug
|
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:
|
class GatherTestsBase:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue