test: make the suite run under Windows

Windows spells a path with backslashes, and three fixtures took the POSIX shape: a config value written into a TOML basic string read `C:\users\…` as an escape, tool arguments built with an f-string broke the same way, and a root was compared as `str(path)` against `/srv/skills`. Paths are encoded with `json.dumps` (whose escaping is valid TOML and valid JSON) and compared as `Path` objects, so the same root matches in either spelling.

`test_interrupt.py` delivers SIGINT with `os.kill(pid, SIGINT)`, which is `TerminateProcess` on Windows, and the router itself needs `add_signal_handler`: the module is skipped there.

`python scripts/wine_pdm.py ci` is green: ruff, basedpyright 0 errors, 1156 passed / 30 skipped.
This commit is contained in:
2026-10-21 19:28:49 +08:00
parent 4c597274e7
commit aafbc207a3
4 changed files with 28 additions and 14 deletions
+8 -10
View File
@@ -1,13 +1,10 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from pathlib import Path
from plyngent.config.models import SkillsConfig
from plyngent.skills import SKILL_FILE, Skill, SkillStore, build_roots, validate_skill_name
if TYPE_CHECKING:
from pathlib import Path
def _write_skill(root: Path, name: str, *, description: str | None = "A test skill", body: str = "Body.") -> Path:
directory = root / name
@@ -28,12 +25,13 @@ def test_build_roots_orders_explicit_paths_first(tmp_path: Path) -> None:
user_config_dir=tmp_path / "config",
home=tmp_path / "home",
)
assert [(r.origin, r.scope, str(r.path)) for r in roots] == [
("config", "user", str(tmp_path / "home" / "team-skills")),
("config", "user", "/srv/skills"),
("plyngent", "user", str(tmp_path / "config" / "skills")),
("claude", "user", str(tmp_path / "home" / ".claude" / "skills")),
("claude", "project", str(tmp_path / "proj" / ".claude" / "skills")),
# Paths, not strings: a Windows run spells the same root differently.
assert [(r.origin, r.scope, r.path) for r in roots] == [
("config", "user", tmp_path / "home" / "team-skills"),
("config", "user", Path("/srv/skills")),
("plyngent", "user", tmp_path / "config" / "skills"),
("claude", "user", tmp_path / "home" / ".claude" / "skills"),
("claude", "project", tmp_path / "proj" / ".claude" / "skills"),
]