52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import pytest
|
|
import tomllib
|
|
from pathlib import Path
|
|
from typing import Generator
|
|
from src import session_logger
|
|
import time
|
|
|
|
@pytest.fixture
|
|
def temp_logs(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> Generator[Path, None, None]:
|
|
# Ensure closed before starting
|
|
session_logger.close_session()
|
|
monkeypatch.setattr(session_logger, "_comms_fh", None)
|
|
|
|
log_dir = tmp_path / "logs"
|
|
scripts_dir = tmp_path / "scripts" / "generated"
|
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
scripts_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
from src import paths
|
|
monkeypatch.setattr(paths, "get_logs_dir", lambda: log_dir)
|
|
monkeypatch.setattr(paths, "get_scripts_dir", lambda: scripts_dir)
|
|
|
|
yield log_dir
|
|
# Cleanup: Close handles if open
|
|
session_logger.close_session()
|
|
|
|
def test_reset_session(temp_logs: Path) -> None:
|
|
# 1. Open first session
|
|
label1 = "label1"
|
|
session_logger.open_session(label=label1)
|
|
|
|
subdirs = [d for d in temp_logs.iterdir() if d.is_dir()]
|
|
assert len(subdirs) == 1
|
|
session1_dir = subdirs[0]
|
|
assert session1_dir.name.endswith(f"_{label1}")
|
|
assert session_logger._comms_fh is not None
|
|
|
|
# 2. Reset to second session
|
|
time.sleep(1.1)
|
|
|
|
label2 = "label2"
|
|
session_logger.reset_session(label=label2)
|
|
|
|
subdirs = sorted([d for d in temp_logs.iterdir() if d.is_dir()], key=lambda x: x.name)
|
|
assert len(subdirs) == 2
|
|
session2_dir = subdirs[1]
|
|
assert session2_dir.name.endswith(f"_{label2}")
|
|
assert session_logger._comms_fh is not None
|
|
|
|
# Verify new handle points to new dir
|
|
assert str(session2_dir) in str(Path(session_logger._comms_fh.name).resolve())
|