fix(test-isolation): prevent scheduler test from poisoning database globals

Use monkeypatch.setattr for engine, SessionLocal, ScheduledTask, and TaskRun
in _setup_isolated_db to ensure pytest restores real database engine state on
teardown, preventing downstream test failures like no such table: documents.
This commit is contained in:
Alexandre Teixeira
2026-10-02 18:54:09 +01:00
parent ab89e3274a
commit 896e1f8233
+6 -6
View File
@@ -38,7 +38,7 @@ def _stub_heavy(monkeypatch):
monkeypatch.setitem(sys.modules, name, types.ModuleType(name))
def _setup_isolated_db():
def _setup_isolated_db(monkeypatch):
import core.database as cd
B = declarative_base()
@@ -65,10 +65,10 @@ def _setup_isolated_db():
eng = create_engine("sqlite:///:memory:")
B.metadata.create_all(eng)
cd.engine = eng
cd.SessionLocal = sessionmaker(bind=eng, autocommit=False, autoflush=False)
cd.ScheduledTask = ScheduledTask
cd.TaskRun = TaskRun
monkeypatch.setattr(cd, "engine", eng)
monkeypatch.setattr(cd, "SessionLocal", sessionmaker(bind=eng, autocommit=False, autoflush=False))
monkeypatch.setattr(cd, "ScheduledTask", ScheduledTask)
monkeypatch.setattr(cd, "TaskRun", TaskRun)
return cd, ScheduledTask, TaskRun
@@ -84,7 +84,7 @@ def test_scheduler_utcnow_preserves_naive_utc_contract():
def _drive_scheduler(monkeypatch, pre_start_setup=None):
"""Build a TaskScheduler bypassing __init__ and run start() + two polls."""
_stub_heavy(monkeypatch)
cd, ScheduledTask, TaskRun = _setup_isolated_db()
cd, ScheduledTask, TaskRun = _setup_isolated_db(monkeypatch)
from src.task_scheduler import TaskScheduler
sch = TaskScheduler.__new__(TaskScheduler)