46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
"""Unit test for config.set_config_value (replaces, doesn't merge)."""
|
|
from __future__ import annotations
|
|
|
|
import yaml
|
|
|
|
from presa_mano.config import (
|
|
set_config_value,
|
|
get_config,
|
|
load_config,
|
|
_STATE,
|
|
_default_config_path,
|
|
)
|
|
|
|
|
|
def test_replace_nested_dict_removes_old_keys(tmp_path, monkeypatch):
|
|
cfg_file = tmp_path / "cfg.yaml"
|
|
cfg_file.write_text(yaml.safe_dump({
|
|
"section": {"items": {"a": 1, "b": 2}},
|
|
}))
|
|
monkeypatch.setenv("PRESA_MANO_CONFIG", str(cfg_file))
|
|
# Reset in-memory singleton
|
|
_STATE["config"] = None
|
|
_STATE["path"] = None
|
|
load_config()
|
|
|
|
set_config_value(["section", "items"], {"c": 3})
|
|
|
|
out = get_config()
|
|
assert out["section"]["items"] == {"c": 3}
|
|
# File on disk also updated
|
|
on_disk = yaml.safe_load(cfg_file.read_text())
|
|
assert on_disk["section"]["items"] == {"c": 3}
|
|
|
|
|
|
def test_create_intermediate_dicts(tmp_path, monkeypatch):
|
|
cfg_file = tmp_path / "cfg.yaml"
|
|
cfg_file.write_text(yaml.safe_dump({}))
|
|
monkeypatch.setenv("PRESA_MANO_CONFIG", str(cfg_file))
|
|
_STATE["config"] = None
|
|
_STATE["path"] = None
|
|
load_config()
|
|
|
|
set_config_value(["a", "b", "c"], 42)
|
|
|
|
assert get_config() == {"a": {"b": {"c": 42}}}
|