The DB-backed lane and the two ffmpeg tests skipped SILENTLY when the DB was unreachable or ffmpeg was absent, so `siftlode check` could print green while ~60 tests never ran. Make the compose lane authoritative: - SIFTLODE_TEST_REQUIRE_DB=1 in docker-compose.test.yml; conftest.pytest_configure turns a would-be skip (no Postgres, or no ffmpeg) into a hard UsageError. - install ffmpeg in Dockerfile.test so the thumbnail/poster tests actually run. - `-rs` in pytest.ini so skip reasons are always visible. Add the shared TestClient fixtures the risk-core suites build on: `make_user` (create + commit a login-ready User), `client` (real auth/session stack, no current_user override — for login/wallet/epoch), and `as_user` (a client pre-authenticated as a given user, for tests that aren't exercising login).
19 lines
1.2 KiB
Docker
19 lines
1.2 KiB
Docker
# Test-only image — the app's Python deps + pytest/ruff, and NOTHING else. Code is bind-mounted at
|
|
# run time (not baked), so pytest always sees the working tree, and this file never touches the prod
|
|
# Dockerfile, so the published image can never carry test tooling. Same python + same pinned
|
|
# requirements.txt as the runtime stage, so tests run against the prod dependency set. Rebuilt only
|
|
# when a requirements file changes (the pip layer is cache-keyed on them); otherwise a no-op.
|
|
#
|
|
# docker build -f backend/Dockerfile.test -t siftlode-test:local backend
|
|
# docker run --rm -v "<repo>/backend:/app" -w /app siftlode-test:local python -m pytest
|
|
FROM python:3.12-slim
|
|
WORKDIR /app
|
|
# ffmpeg so the thumbnail/poster tests (needs_ffmpeg) actually run in the gate instead of skipping
|
|
# silently — the runtime image already ships ffmpeg, so the test image should too (see conftest's
|
|
# SIFTLODE_TEST_REQUIRE_DB, which now also refuses to run if ffmpeg is missing).
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ffmpeg \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
COPY requirements.txt requirements-dev.txt ./
|
|
RUN pip install --no-cache-dir -r requirements.txt -r requirements-dev.txt
|