返回 last30days-skill
test_hermes_skillignore.py
根目录 / tests / test_hermes_skillignore.py
1 from pathlib import Path
2
3 ROOT = Path(__file__).resolve().parents[1]
4 SKILL_ROOT = ROOT / "skills" / "last30days"
5
6
7 def _skillignore_entries() -> set[str]:
8 text = (SKILL_ROOT / ".skillignore").read_text(encoding="utf-8")
9 return {
10 line.strip()
11 for line in text.splitlines()
12 if line.strip() and not line.lstrip().startswith("#")
13 }
14
15
16 def test_hermes_skillignore_excludes_non_runtime_scan_surface() -> None:
17 entries = _skillignore_entries()
18
19 expected = {
20 "assets/",
21 "agents/",
22 "scripts/build-skill.sh",
23 "scripts/compare.sh",
24 "scripts/evaluate_search_quality.py",
25 "scripts/test_device_auth.py",
26 "scripts/test-v1-vs-v2.sh",
27 "scripts/verify_v3.py",
28 }
29
30 assert expected <= entries
31 for entry in sorted(expected):
32 assert (SKILL_ROOT / entry.rstrip("/")).exists()
33
34
35 def test_hermes_skillignore_keeps_runtime_contract_scannable() -> None:
36 entries = _skillignore_entries()
37
38 expected_scannable = {
39 "SKILL.md",
40 "references",
41 "references/",
42 "references/save-html-brief.md",
43 "scripts/last30days.py",
44 "scripts/lib/",
45 }
46
47 for entry in sorted(expected_scannable):
48 assert entry not in entries
49 assert (SKILL_ROOT / entry.rstrip("/")).exists()
50
50 lines PYTHON