fix: isolate tests on in-memory SQLite to protect production database
Tests were importing the production engine and dropping all tables on teardown, corrupting topology.db in the Docker volume. Set DATABASE_URL to sqlite:///:memory: before any import in the test file, and use StaticPool in database.py when running against :memory: so all connections share the same in-memory database. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+6
-4
@@ -9,10 +9,12 @@ os.makedirs("data", exist_ok=True)
|
||||
|
||||
_DATABASE_URL = os.environ.get("DATABASE_URL", "sqlite:///./data/topology.db")
|
||||
|
||||
engine = create_engine(
|
||||
_DATABASE_URL,
|
||||
connect_args={"check_same_thread": False}
|
||||
)
|
||||
_engine_kwargs: dict = {"connect_args": {"check_same_thread": False}}
|
||||
if ":memory:" in _DATABASE_URL:
|
||||
from sqlalchemy.pool import StaticPool
|
||||
_engine_kwargs["poolclass"] = StaticPool
|
||||
|
||||
engine = create_engine(_DATABASE_URL, **_engine_kwargs)
|
||||
|
||||
|
||||
@event.listens_for(Engine, "connect")
|
||||
|
||||
Reference in New Issue
Block a user