From 896e1f82332febc6104cdeee83d3eb6af4754d52 Mon Sep 17 00:00:00 2001 From: Alexandre Teixeira <111787685+alteixeira20@users.noreply.github.com> Date: Fri, 2 Oct 2026 18:25:39 +0100 Subject: [PATCH] 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. --- tests/test_scheduler_restart_doublefire.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_scheduler_restart_doublefire.py b/tests/test_scheduler_restart_doublefire.py index ca90c55bc..fd8aa86ea 100644 --- a/tests/test_scheduler_restart_doublefire.py +++ b/tests/test_scheduler_restart_doublefire.py @@ -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)