Skip to content

Commit 8a2717c

Browse files
committed
Add regression tests for #491 and #492
Signed-off-by: Anders Kaseorg <[email protected]>
1 parent 02a628d commit 8a2717c

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

tests/test_sync.py

+45
Original file line numberDiff line numberDiff line change
@@ -1208,3 +1208,48 @@ def test_function(**kwargs: Any) -> None:
12081208

12091209
# SyncToAsync.__call__.loop.run_in_executor has a param named `task_context`.
12101210
await test_function(task_context=1)
1211+
1212+
1213+
def test_nested_task() -> None:
1214+
async def inner() -> asyncio.Task[None]:
1215+
return asyncio.create_task(sync_to_async(print)("inner"))
1216+
1217+
async def main() -> None:
1218+
task = await sync_to_async(async_to_sync(inner))()
1219+
await task
1220+
1221+
async_to_sync(main)()
1222+
1223+
1224+
def test_nested_task_later() -> None:
1225+
def later(fut: asyncio.Future[asyncio.Task[None]]) -> None:
1226+
task = asyncio.create_task(sync_to_async(print)("later"))
1227+
fut.set_result(task)
1228+
1229+
async def inner() -> asyncio.Future[asyncio.Task[None]]:
1230+
loop = asyncio.get_running_loop()
1231+
fut = loop.create_future()
1232+
loop.call_later(0.1, later, fut)
1233+
return fut
1234+
1235+
async def main() -> None:
1236+
fut = await sync_to_async(async_to_sync(inner))()
1237+
task = await fut
1238+
await task
1239+
1240+
async_to_sync(main)()
1241+
1242+
1243+
def test_double_nested_task() -> None:
1244+
async def inner() -> asyncio.Task[None]:
1245+
return asyncio.create_task(sync_to_async(print)("inner"))
1246+
1247+
async def outer() -> asyncio.Task[asyncio.Task[None]]:
1248+
return asyncio.create_task(sync_to_async(async_to_sync(inner))())
1249+
1250+
async def main() -> None:
1251+
outer_task = await sync_to_async(async_to_sync(outer))()
1252+
inner_task = await outer_task
1253+
await inner_task
1254+
1255+
async_to_sync(main)()

0 commit comments

Comments
 (0)