From fb9941556c1b6bb16d90f4421ea364a297388134 Mon Sep 17 00:00:00 2001 From: Kenta IDA Date: Thu, 5 Apr 2018 04:58:27 +0900 Subject: [PATCH] uasyncio.core: Fix that run_until_complete does not return coroutine's result --- uasyncio.core/test_coro_result.py | 26 ++++++++++++++++++++++++++ uasyncio.core/uasyncio/core.py | 6 +++--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 uasyncio.core/test_coro_result.py diff --git a/uasyncio.core/test_coro_result.py b/uasyncio.core/test_coro_result.py new file mode 100644 index 000000000..2a68a273f --- /dev/null +++ b/uasyncio.core/test_coro_result.py @@ -0,0 +1,26 @@ +try: + import uasyncio.core as asyncio +except ImportError: + import asyncio +import logging + +async def async_func_int(value:int) -> int: + return value + +async def async_func_int_sleep(value:int) -> int: + await asyncio.sleep(1) + return value + +async def async_func_none() -> None: + pass + +async def async_func_none_sleep() -> None: + await asyncio.sleep(1) + + +loop = asyncio.get_event_loop() +assert loop.run_until_complete(async_func_int(0)) == 0 +assert loop.run_until_complete(async_func_int(-1)) == -1 +assert loop.run_until_complete(async_func_int_sleep(-2)) == -2 +assert loop.run_until_complete(async_func_none()) is None +assert loop.run_until_complete(async_func_none_sleep()) is None diff --git a/uasyncio.core/uasyncio/core.py b/uasyncio.core/uasyncio/core.py index 274883a7f..d0f9b14d8 100644 --- a/uasyncio.core/uasyncio/core.py +++ b/uasyncio.core/uasyncio/core.py @@ -151,10 +151,10 @@ def run_forever(self): def run_until_complete(self, coro): def _run_and_stop(): - yield from coro - yield StopLoop(0) + ret = yield from coro + yield StopLoop(ret) self.call_soon(_run_and_stop()) - self.run_forever() + return self.run_forever() def stop(self): self.call_soon((lambda: (yield StopLoop(0)))())