mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-11 01:12: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))
|
monkeypatch.setitem(sys.modules, name, types.ModuleType(name))
|
||||||
|
|
||||||
|
|
||||||
def _setup_isolated_db():
|
def _setup_isolated_db(monkeypatch):
|
||||||
import core.database as cd
|
import core.database as cd
|
||||||
B = declarative_base()
|
B = declarative_base()
|
||||||
|
|
||||||
@@ -65,10 +65,10 @@ def _setup_isolated_db():
|
|||||||
|
|
||||||
eng = create_engine("sqlite:///:memory:")
|
eng = create_engine("sqlite:///:memory:")
|
||||||
B.metadata.create_all(eng)
|
B.metadata.create_all(eng)
|
||||||
cd.engine = eng
|
monkeypatch.setattr(cd, "engine", eng)
|
||||||
cd.SessionLocal = sessionmaker(bind=eng, autocommit=False, autoflush=False)
|
monkeypatch.setattr(cd, "SessionLocal", sessionmaker(bind=eng, autocommit=False, autoflush=False))
|
||||||
cd.ScheduledTask = ScheduledTask
|
monkeypatch.setattr(cd, "ScheduledTask", ScheduledTask)
|
||||||
cd.TaskRun = TaskRun
|
monkeypatch.setattr(cd, "TaskRun", TaskRun)
|
||||||
return cd, ScheduledTask, 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):
|
def _drive_scheduler(monkeypatch, pre_start_setup=None):
|
||||||
"""Build a TaskScheduler bypassing __init__ and run start() + two polls."""
|
"""Build a TaskScheduler bypassing __init__ and run start() + two polls."""
|
||||||
_stub_heavy(monkeypatch)
|
_stub_heavy(monkeypatch)
|
||||||
cd, ScheduledTask, TaskRun = _setup_isolated_db()
|
cd, ScheduledTask, TaskRun = _setup_isolated_db(monkeypatch)
|
||||||
|
|
||||||
from src.task_scheduler import TaskScheduler
|
from src.task_scheduler import TaskScheduler
|
||||||
sch = TaskScheduler.__new__(TaskScheduler)
|
sch = TaskScheduler.__new__(TaskScheduler)
|
||||||
|
|||||||
Reference in New Issue
Block a user