The queue shared the `pipeline:` prefix with flow state, so `RedisState.clear()` could DEL the queue stream and `keys()` enumerated queue entries — only callers filtering `__`-prefixed names kept it safe. It moves to `queue:` without a migration: whatever is in flight at the upgrade is dropped once, documented in DEPLOY.md rather than papered over. Alongside it: `pool_pre_ping`, so a connection idle across a Postgres restart costs a round trip instead of a failed request; the test suite pins ENVIRONMENT=local and DOMAIN=localhost itself rather than inheriting a deployment's .env; and `depth` leaves the queue stats, where it reported the capped journal length as if it were a backlog. ALERTS_FILE and PANELS_FILE now point at /data. They defaulted to a path on no volume, so alert routing and every wall-panel pairing were living in the container's writable layer and vanishing on each rebuild. Carrying the existing files across is a manual step; DEPLOY.md has it. development.md was still the upstream template — compose.override.yml, localhost.tiangolo.com, `docker compose watch` as the dev flow — and said nothing about the Playwright suite. Rewritten against what the Makefiles actually do. deployment.md was template text too, duplicating the root DEPLOY.md, and is gone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Uq8mtNb97A7praJLyeEYgs
24 lines
1.1 KiB
Python
24 lines
1.1 KiB
Python
"""Redirect the suite at its own database.
|
|
|
|
`app.core.db` builds the engine at import time and several modules bind that
|
|
object, so the name has to be in the environment before anything imports the
|
|
settings. Overriding it here — the first module pytest imports for the
|
|
package — keeps a test run from touching the development data.
|
|
"""
|
|
|
|
import os
|
|
|
|
os.environ["POSTGRES_DB"] = "app_test"
|
|
# The MCP session manager can only be entered once per instance, and the suite
|
|
# builds a TestClient — and so a lifespan — per test module. Tests that want the
|
|
# endpoint mount it themselves.
|
|
os.environ["MCP_ENABLED"] = "false"
|
|
# The private seeding endpoints are opt-in; the suite is one of the two places
|
|
# (with the dev stack) where they are meant to work.
|
|
os.environ["PRIVATE_API_ENABLED"] = "true"
|
|
# The suite is the development configuration by definition: `/private` is
|
|
# gated on it (app/api/routes/private.py) and the MCP host allow-list is
|
|
# built from DOMAIN (app/mcp/http.py), while the tests speak to api.localhost.
|
|
os.environ["ENVIRONMENT"] = "local"
|
|
os.environ["DOMAIN"] = "localhost"
|