mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-06 06:52:20 +02:00
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user