]> danix's work - publisher.git/commitdiff
fix: clean up config module - remove self-import pattern, pass path explicitly in...
authorDanilo M. <redacted>
Fri, 1 May 2026 10:46:35 +0000 (12:46 +0200)
committerDanilo M. <redacted>
Fri, 1 May 2026 10:46:35 +0000 (12:46 +0200)
core/config.py
tests/test_config.py

index 1f400b42793f4bc5fd33335f0891ebcc61d63949..741dfad5c6abf3cf465462bfe439ebf759b13a19 100644 (file)
@@ -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)),
         )
index 6b3417f3181fc3225c53d9ceb9dd56f07959ea94..f19bfdd03fe30b183e3a5784960cc4e90a86d8a5 100644 (file)
@@ -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