Files
manual_slop/tests/test_paths.py
2026-03-12 18:47:17 -04:00

65 lines
2.2 KiB
Python

import os
import pytest
from pathlib import Path
from src import paths
@pytest.fixture(autouse=True)
def reset_paths():
paths.reset_resolved()
yield
paths.reset_resolved()
def test_default_paths():
root_dir = Path(paths.__file__).resolve().parent.parent
assert paths.get_conductor_dir() == root_dir / "conductor"
assert paths.get_logs_dir() == root_dir / "logs/sessions"
assert paths.get_scripts_dir() == root_dir / "scripts/generated"
# config path should now be an absolute path relative to src/paths.py
assert paths.get_config_path() == root_dir / "config.toml"
assert paths.get_tracks_dir() == root_dir / "conductor/tracks"
assert paths.get_archive_dir() == root_dir / "conductor/archive"
def test_env_var_overrides(tmp_path, monkeypatch):
root_dir = Path(paths.__file__).resolve().parent.parent
# Relative env var (resolved against root_dir)
monkeypatch.setenv("SLOP_CONDUCTOR_DIR", "custom_conductor")
assert paths.get_conductor_dir() == (root_dir / "custom_conductor").resolve()
paths.reset_resolved()
# Absolute env var
abs_logs = (tmp_path / "abs_logs").resolve()
monkeypatch.setenv("SLOP_LOGS_DIR", str(abs_logs))
assert paths.get_logs_dir() == abs_logs
def test_config_overrides(tmp_path, monkeypatch):
root_dir = Path(paths.__file__).resolve().parent.parent
config_file = tmp_path / "custom_config.toml"
content = """
[paths]
conductor_dir = "cfg_conductor"
logs_dir = "cfg_logs"
scripts_dir = "cfg_scripts"
"""
config_file.write_text(content)
monkeypatch.setenv("SLOP_CONFIG", str(config_file))
assert paths.get_conductor_dir() == (root_dir / "cfg_conductor").resolve()
assert paths.get_logs_dir() == root_dir / "cfg_logs"
assert paths.get_scripts_dir() == root_dir / "cfg_scripts"
def test_precedence(tmp_path, monkeypatch):
root_dir = Path(paths.__file__).resolve().parent.parent
config_file = tmp_path / "custom_config.toml"
content = """
[paths]
conductor_dir = "cfg_conductor"
"""
config_file.write_text(content)
monkeypatch.setenv("SLOP_CONFIG", str(config_file))
monkeypatch.setenv("SLOP_CONDUCTOR_DIR", "env_conductor")
# Env var should take precedence over config
assert paths.get_conductor_dir() == (root_dir / "env_conductor").resolve()