[8df60dde] Rebase timeout-fix branch onto current main and restore test coverage (#816)

* [8df60dde] Fix RuntimeWarning in claim_review tests by stubbing the findings ledger session

Three claim_review tests (test_claim_review_returns_evidence_inline,
test_claim_review_marks_evidence_inspected,
test_claim_review_returns_gateway_timeout_on_slow_evidence) triggered
RuntimeWarnings about unawaited coroutines from findings.py because the
mock session's execute method was not configured for the
ReviewFindingsRepository calls that _build_qa_claim_evidence makes.
Added _stub_empty_ledger(task_svc.session) to each, matching the pattern
already used by the pass_review and fail_review tests.

* [8df60dde] Fix RuntimeWarning in evidence tests by stubbing the findings ledger session

* [8df60dde] test: add _stub_empty_ledger to slow-db-read evidence test to prevent RuntimeWarning

The third evidence test (test_evidence_returns_gateway_timeout_on_slow_db_read)
was missing the _stub_empty_ledger stub that the other two evidence tests
already have. Without it, the mock session's execute method is not
configured for the ReviewFindingsRepository calls that evidence() makes,
producing RuntimeWarnings about unawaited coroutines from findings.py:288.

---------

Co-authored-by: Backend Developer 2 <be-dev-2@roboco.tech>
This commit is contained in:
roboco-app[bot]
2026-08-02 14:59:40 +00:00
committed by GitHub
co-authored by Backend Developer 2
parent c6913bf792
commit c0a2a0c871
2 changed files with 17 additions and 0 deletions
@@ -83,6 +83,7 @@ async def test_claim_review_returns_evidence_inline() -> None:
work_svc = AsyncMock()
git_svc = AsyncMock()
git_svc.diff_and_files.return_value = ("+++ diff content", ["README.md"])
_stub_empty_ledger(task_svc.session)
deps = _make_deps(task=task_svc, work_session=work_svc, git=git_svc)
c = Choreographer(deps)
@@ -149,6 +150,7 @@ async def test_claim_review_marks_evidence_inspected() -> None:
task_svc.qa_claim.return_value = t_claimed
git_svc = AsyncMock()
git_svc.diff_and_files.return_value = ("", [])
_stub_empty_ledger(task_svc.session)
deps = _make_deps(task=task_svc, git=git_svc)
c = Choreographer(deps)
@@ -218,6 +220,7 @@ async def test_claim_review_returns_gateway_timeout_on_slow_evidence(
return "+++ diff content", ["README.md"]
git_svc.diff_and_files.side_effect = _slow_diff_and_files
_stub_empty_ledger(task_svc.session)
deps = _make_deps(task=task_svc, work_session=work_svc, git=git_svc)
c = Choreographer(deps)
@@ -58,6 +58,17 @@ def _make_deps(**overrides: AsyncMock) -> ContentActionsDeps:
)
def _stub_empty_ledger(session: MagicMock) -> None:
"""Configure a mock session's ``execute`` so ``ReviewFindingsRepository``
finds no rows — covers evidence()'s findings-ledger read, which a bare
``AsyncMock`` session doesn't configure and leaves unawaited coroutines."""
session.execute = AsyncMock(
return_value=MagicMock(
scalars=MagicMock(return_value=MagicMock(all=MagicMock(return_value=[])))
)
)
# ---------------------------------------------------------------------------
# commit
# ---------------------------------------------------------------------------
@@ -647,6 +658,7 @@ async def test_evidence_valid_task_returns_ok_with_pr_diff() -> None:
)
task_svc = AsyncMock()
task_svc.get.return_value = task_obj
_stub_empty_ledger(task_svc.session)
git_svc = AsyncMock()
git_svc.diff_and_files.return_value = (
"diff --git a/foo.py b/foo.py\n+added line",
@@ -711,6 +723,7 @@ async def test_evidence_returns_gateway_timeout_on_slow_git(
)
task_svc = AsyncMock()
task_svc.get.return_value = task_obj
_stub_empty_ledger(task_svc.session)
async def _slow_diff_and_files(**_kwargs: object) -> tuple[str, list[str]]:
await asyncio.sleep(1)
@@ -755,6 +768,7 @@ async def test_evidence_returns_gateway_timeout_on_slow_db_read(
)
task_svc = AsyncMock()
task_svc.get.return_value = task_obj
_stub_empty_ledger(task_svc.session)
git_svc = AsyncMock()
git_svc.diff_and_files.return_value = ("diff", ["f.py"])
workspace_svc = AsyncMock()