45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from afs.config import load_config, load_config_model
|
|
|
|
|
|
def test_load_config_merges_workspace_registry(tmp_path, monkeypatch) -> None:
|
|
context_root = tmp_path / "context"
|
|
context_root.mkdir()
|
|
workspace_dir = tmp_path / "workspace"
|
|
workspace_dir.mkdir()
|
|
|
|
registry_path = context_root / "workspaces.toml"
|
|
registry_path.write_text(
|
|
"[[workspaces]]\n"
|
|
f"path = \"{workspace_dir}\"\n"
|
|
"description = \"Example\"\n",
|
|
encoding="utf-8",
|
|
)
|
|
|
|
config_path = tmp_path / "afs.toml"
|
|
config_path.write_text(
|
|
f"[general]\ncontext_root = \"{context_root}\"\n",
|
|
encoding="utf-8",
|
|
)
|
|
|
|
monkeypatch.chdir(tmp_path)
|
|
data = load_config(merge_user=False)
|
|
workspaces = data["general"]["workspace_directories"]
|
|
assert workspaces
|
|
assert Path(workspaces[0]["path"]).resolve() == workspace_dir.resolve()
|
|
|
|
|
|
def test_load_config_model_uses_explicit_path(tmp_path) -> None:
|
|
context_root = tmp_path / "context"
|
|
config_path = tmp_path / "custom.toml"
|
|
config_path.write_text(
|
|
f"[general]\ncontext_root = \"{context_root}\"\n",
|
|
encoding="utf-8",
|
|
)
|
|
|
|
model = load_config_model(config_path=config_path, merge_user=False)
|
|
assert model.general.context_root == context_root.resolve()
|