init: llm-wiki-haness 하네스 설계
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||
ADAPTERS = REPO_ROOT / "harness/adapters"
|
||||
sys.path.insert(0, str(ADAPTERS))
|
||||
import generate_rules # noqa: E402
|
||||
|
||||
|
||||
class RuleGenerationTest(unittest.TestCase):
|
||||
def test_all_rule_adapters_are_current(self) -> None:
|
||||
stale, written = generate_rules.generate(REPO_ROOT, check=True)
|
||||
self.assertEqual(stale, [])
|
||||
self.assertEqual(written, [])
|
||||
rendered = generate_rules.render(REPO_ROOT)
|
||||
self.assertEqual(len(rendered), 16)
|
||||
self.assertTrue(all("GENERATED from rules/" in text for text in rendered.values()))
|
||||
|
||||
def test_root_rule_change_is_detected(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
for relative in (
|
||||
"harness/source/rule-adapters.json",
|
||||
"rules/advisory-depth.md",
|
||||
"rules/reporting-standards.md",
|
||||
"rules/diagram-standards.md",
|
||||
):
|
||||
target = root / relative
|
||||
target.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copyfile(REPO_ROOT / relative, target)
|
||||
rendered = generate_rules.render(root)
|
||||
for path, text in rendered.items():
|
||||
target = root / path
|
||||
target.parent.mkdir(parents=True, exist_ok=True)
|
||||
target.write_text(text, encoding="utf-8")
|
||||
source = root / "rules/advisory-depth.md"
|
||||
source.write_text(source.read_text(encoding="utf-8") + "\n변경\n", encoding="utf-8")
|
||||
stale, _ = generate_rules.generate(root, check=True)
|
||||
self.assertTrue(any("advisory-depth" in path for path in stale))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user