From: Danilo M. Date: Fri, 1 May 2026 10:46:35 +0000 (+0200) Subject: fix: clean up config module - remove self-import pattern, pass path explicitly in... X-Git-Tag: v1.0~30 X-Git-Url: https://git.danix.xyz/?a=commitdiff_plain;h=aec3c628fb6196dd2d3cbfba84fe70a66c727833;p=publisher.git fix: clean up config module - remove self-import pattern, pass path explicitly in tests --- diff --git a/core/config.py b/core/config.py index 1f400b4..741dfad 100644 --- a/core/config.py +++ b/core/config.py @@ -1,5 +1,5 @@ from __future__ import annotations -from dataclasses import dataclass +from dataclasses import dataclass, field from pathlib import Path import tomlkit @@ -14,10 +14,7 @@ class Config: def is_complete(self) -> bool: return bool(self.blog_repo) - def save(self, path: Path | None = None) -> None: - import core.config as _mod - if path is None: - path = _mod.DEFAULT_CONFIG_PATH + def save(self, path: Path = DEFAULT_CONFIG_PATH) -> None: path.parent.mkdir(parents=True, exist_ok=True) doc = tomlkit.document() doc.add("blog_repo", self.blog_repo) @@ -26,15 +23,13 @@ class Config: path.write_text(tomlkit.dumps(doc)) @classmethod - def load(cls, path: Path | None = None) -> "Config": - import core.config as _mod - if path is None: - path = _mod.DEFAULT_CONFIG_PATH + def load(cls, path: Path = DEFAULT_CONFIG_PATH) -> "Config": if not path.exists(): return cls() data = tomlkit.loads(path.read_text()) + defaults = cls() return cls( - blog_repo=str(data.get("blog_repo", "")), - transart_script=str(data.get("transart_script", "/home/danix/bin/transart.py")), - typora_bin=str(data.get("typora_bin", "typora")), + blog_repo=str(data.get("blog_repo", defaults.blog_repo)), + transart_script=str(data.get("transart_script", defaults.transart_script)), + typora_bin=str(data.get("typora_bin", defaults.typora_bin)), ) diff --git a/tests/test_config.py b/tests/test_config.py index 6b3417f..f19bfdd 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,29 +1,25 @@ -import pytest from pathlib import Path -import tempfile, os from core.config import Config, DEFAULT_CONFIG_PATH -def test_config_loads_defaults_when_missing(tmp_path, monkeypatch): - monkeypatch.setattr("core.config.DEFAULT_CONFIG_PATH", tmp_path / "config.toml") - cfg = Config.load() +def test_config_loads_defaults_when_missing(tmp_path): + path = tmp_path / "config.toml" + cfg = Config.load(path) assert cfg.blog_repo == "" assert cfg.transart_script == "/home/danix/bin/transart.py" assert cfg.typora_bin == "typora" -def test_config_round_trips(tmp_path, monkeypatch): +def test_config_round_trips(tmp_path): path = tmp_path / "config.toml" - monkeypatch.setattr("core.config.DEFAULT_CONFIG_PATH", path) cfg = Config(blog_repo="/some/path", transart_script="/bin/x", typora_bin="typora") - cfg.save() - loaded = Config.load() + cfg.save(path) + loaded = Config.load(path) assert loaded.blog_repo == "/some/path" -def test_config_is_complete_false_when_blog_repo_empty(tmp_path, monkeypatch): - monkeypatch.setattr("core.config.DEFAULT_CONFIG_PATH", tmp_path / "config.toml") - cfg = Config.load() +def test_config_is_complete_false_when_blog_repo_empty(tmp_path): + path = tmp_path / "config.toml" + cfg = Config.load(path) assert cfg.is_complete() is False -def test_config_is_complete_true_when_all_set(tmp_path, monkeypatch): - monkeypatch.setattr("core.config.DEFAULT_CONFIG_PATH", tmp_path / "config.toml") +def test_config_is_complete_true_when_all_set(): cfg = Config(blog_repo="/some/repo", transart_script="/bin/x", typora_bin="typora") assert cfg.is_complete() is True