Files
2026-07-13 13:12:33 +08:00

62 lines
1.8 KiB
Python

from __future__ import annotations
from pathlib import Path
from opensquilla.paths import media_root_from_config
class _Config:
attachments = None
state_dir = None
config_path = None
def test_default_media_root_uses_opensquilla_home_not_cwd(
monkeypatch, tmp_path: Path
) -> None:
home = tmp_path / "home" / ".opensquilla"
long_cwd = tmp_path / ("nested-" + "x" * 24) / ("worktree-" + "y" * 24)
long_cwd.mkdir(parents=True)
monkeypatch.setenv("OPENSQUILLA_STATE_DIR", str(home))
monkeypatch.chdir(long_cwd)
assert media_root_from_config(_Config()) == home / "media"
def test_default_media_root_prefers_config_state_root(tmp_path: Path) -> None:
class Config:
attachments = None
state_dir = str(tmp_path / "runtime-home" / "state")
config_path = None
assert media_root_from_config(Config()) == tmp_path / "runtime-home" / "media"
def test_relocated_state_dir_keeps_media_inside_state_tree(tmp_path: Path) -> None:
# A state_dir not following the default "<home>/state" layout must keep its
# media inside the operator-provisioned tree, not escape to a sibling dir.
class Config:
attachments = None
state_dir = str(tmp_path / "srv" / "opensquilla-state")
config_path = None
state = Path(Config.state_dir)
state.mkdir(parents=True)
media = media_root_from_config(Config())
assert media == state / "media"
assert media.is_relative_to(state)
def test_explicit_media_root_is_preserved(tmp_path: Path) -> None:
class Attachments:
media_root = str(tmp_path / "custom-media")
class Config:
attachments = Attachments()
state_dir = str(tmp_path / "runtime-home" / "state")
config_path = None
assert media_root_from_config(Config()) == tmp_path / "custom-media"