Files
odysseus/tests/test_session_cwd_persistence.py
T

44 lines
1.3 KiB
Python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
import core.database as cdb
import core.session_manager as smod
from core.database import Session as DbSession
from core.session_manager import SessionManager
def _session_factory(tmp_path):
engine = create_engine(f"sqlite:///{tmp_path / 'sessions.db'}")
cdb.Base.metadata.create_all(engine)
return sessionmaker(bind=engine, autoflush=False, autocommit=False)
def test_session_manager_create_and_reload_preserves_cwd(tmp_path, monkeypatch):
session_local = _session_factory(tmp_path)
monkeypatch.setattr(smod, "SessionLocal", session_local)
manager = SessionManager.__new__(SessionManager)
manager.sessions = {}
manager.upload_handler = None
created = manager.create_session(
"sid",
"Workspace",
"http://localhost/v1/chat/completions",
"gpt-4",
owner="alice",
cwd="/home/pewds/odysseus-tui",
)
assert created.cwd == "/home/pewds/odysseus-tui"
db = session_local()
try:
row = db.query(DbSession).filter(DbSession.id == "sid").first()
assert row.cwd == "/home/pewds/odysseus-tui"
hydrated = manager._db_to_session_meta(row)
finally:
db.close()
assert hydrated.cwd == "/home/pewds/odysseus-tui"