Terminal / tests /test_background_tasks.py
Baida07's picture
sync: 204 file da Baida98/AI@843961e3 (2026-08-31 07:48 UTC) [deploy-all]
9f9d3dc verified
Raw
History Blame
1.87 kB
import asyncio
import unittest
from api import background_tasks
class BackgroundTaskSupervisorTests(unittest.IsolatedAsyncioTestCase):
async def asyncSetUp(self):
await background_tasks.shutdown_background_tasks()
async def asyncTearDown(self):
await background_tasks.shutdown_background_tasks()
async def test_duplicate_name_reuses_task_and_closes_duplicate_coroutine(self):
started = asyncio.Event()
release = asyncio.Event()
async def worker():
started.set()
await release.wait()
first = background_tasks.spawn_background_task(worker(), name="duplicate")
await started.wait()
duplicate = background_tasks.spawn_background_task(worker(), name="duplicate")
self.assertIs(first, duplicate)
release.set()
await background_tasks.shutdown_background_tasks()
self.assertTrue(first.done())
async def test_shutdown_cancels_and_awaits_running_task(self):
cancelled = asyncio.Event()
async def worker():
try:
await asyncio.Event().wait()
except asyncio.CancelledError:
cancelled.set()
raise
background_tasks.spawn_background_task(worker(), name="cancellable")
await asyncio.sleep(0)
await background_tasks.shutdown_background_tasks()
self.assertTrue(cancelled.is_set())
self.assertFalse(background_tasks._tasks)
async def test_completed_task_is_not_left_in_registry_after_shutdown(self):
async def worker():
return "ok"
task = background_tasks.spawn_background_task(worker(), name="completed")
await task
await background_tasks.shutdown_background_tasks()
self.assertFalse(background_tasks._tasks)
if __name__ == "__main__":
unittest.main()