mirror of
https://github.com/Ar9av/obsidian-wiki.git
synced 2026-09-14 20:36:34 +08:00
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
import re
|
|
import unittest
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
class WikiNarrateDocsTest(unittest.TestCase):
|
|
def read(self, relpath: str) -> str:
|
|
return (ROOT / relpath).read_text()
|
|
|
|
def test_skill_declares_the_canonical_command_and_voices(self) -> None:
|
|
skill = self.read(".skills/wiki-narrate/SKILL.md")
|
|
|
|
self.assertIn("/wiki-narrate <topic> [--voice briefing|plain-language|lecturer] [--save]", skill)
|
|
self.assertIn("default voice is `briefing`", skill)
|
|
self.assertIn("case-sensitive", skill)
|
|
self.assertIn("Unsupported values", skill)
|
|
|
|
def test_skill_requires_closed_set_citations(self) -> None:
|
|
skill = self.read(".skills/wiki-narrate/SKILL.md")
|
|
|
|
self.assertIn("every factual sentence", skill)
|
|
self.assertIn("^[inferred]", skill)
|
|
self.assertIn("^[ambiguous]", skill)
|
|
self.assertIn("web knowledge", skill)
|
|
self.assertIn("model memory", skill)
|
|
|
|
def test_skill_keeps_readouts_out_of_the_knowledge_graph(self) -> None:
|
|
skill = self.read(".skills/wiki-narrate/SKILL.md")
|
|
|
|
self.assertIn("`_readouts/<slug>.md`", skill)
|
|
self.assertIn("must not update `index.md` or `.manifest.json`", skill)
|
|
self.assertIn("exclude `_readouts/`", skill)
|
|
|
|
def test_voice_reference_has_exactly_the_three_first_release_voices(self) -> None:
|
|
voices = self.read(".skills/wiki-narrate/references/voices.md")
|
|
|
|
headings = set(re.findall(r"^## `([^`]+)`$", voices, flags=re.MULTILINE))
|
|
self.assertEqual(headings, {"briefing", "plain-language", "lecturer"})
|
|
|
|
def test_routing_and_readme_expose_wiki_narrate(self) -> None:
|
|
agents = self.read("AGENTS.md")
|
|
readme = self.read("README.md")
|
|
|
|
self.assertIn("`wiki-narrate`", agents)
|
|
self.assertIn("`wiki-narrate`", readme)
|
|
self.assertIn("`/wiki-narrate <topic>`", readme)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|