import asyncio import pytest from src import main @pytest.mark.anyio async def test_context_returns_fallback_when_gitea_exceeds_deadline(monkeypatch): cancelled = asyncio.Event() async def hanging_current_user(): try: await asyncio.Event().wait() finally: cancelled.set() async def empty_collection(): return [] monkeypatch.setattr(main, "CONTEXT_TIMEOUT_SECONDS", 0.01) monkeypatch.setattr(main, "current_user", hanging_current_user) monkeypatch.setattr(main, "repos", empty_collection) monkeypatch.setattr(main, "issues", empty_collection) monkeypatch.setattr(main, "pull_requests", empty_collection) response = await main.context() assert response.status_code == 200 assert response.headers["retry-after"] == "1" assert b'"repos":[]' in response.body assert b'"error":"Gitea context request timed out after 0.01s"' in response.body assert cancelled.is_set()