chore: run ty on tests/ and make the new ingest tests pass it

Stop excluding tests/ from the ty-check pre-commit hook so touched test files
are type-checked. Fix the new ingest tests under the now-active check:
- cast duck-typed JobContext / App test doubles to their declared types;
- narrow the gated Postgres fixture's str | None URL (pytest.skip isn't modelled
  as NoReturn by ty).

Pre-existing type issues in untouched test modules are unaffected (the hook
checks only changed files); they'll be cleaned as those files are next touched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Chris Coutinho
2026-06-03 04:20:15 +02:00
co-authored by Claude Opus 4.8
parent 21b7922bac
commit 3407e3cf64
3 changed files with 6 additions and 4 deletions
@@ -3,10 +3,11 @@
Uses procrastinate's in-memory connector so no live Postgres is required.
"""
from typing import cast
from unittest.mock import AsyncMock
import pytest
from procrastinate import testing
from procrastinate import App, JobContext, testing
import nextcloud_mcp_server.vector.queue.procrastinate as pq
from nextcloud_mcp_server.vector.scanner import DocumentTask
@@ -158,7 +159,7 @@ class TestReclaimStalledJobs:
class Ctx:
app = FakeApp()
await pq.reclaim_stalled_ingest_jobs(Ctx(), timestamp=0)
await pq.reclaim_stalled_ingest_jobs(cast(JobContext, Ctx()), timestamp=0)
assert retried == [1, 2]
@@ -184,7 +185,7 @@ class TestGetIngestJobCounts:
class FakeApp:
job_manager = FakeManager()
counts = await pq.get_ingest_job_counts(FakeApp())
counts = await pq.get_ingest_job_counts(cast(App, FakeApp()))
assert counts["todo"] == 3
assert counts["doing"] == 1
assert counts["failed"] == 2