Files
document-haness/tests/test_cli.py
T

51 lines
1.8 KiB
Python

from __future__ import annotations
import json
import tempfile
import unittest
from contextlib import redirect_stdout
from io import StringIO
from pathlib import Path
from claridoc.cli import main
class CliTests(unittest.TestCase):
def test_init_and_validate(self) -> None:
with tempfile.TemporaryDirectory() as temp:
workspace = Path(temp) / "workspace"
with redirect_stdout(StringIO()):
self.assertEqual(main(["init", str(workspace)]), 0)
code = main([
"validate",
"--brief", str(workspace / "brief.json"),
"--sources", str(workspace / "sources.json"),
])
self.assertEqual(code, 0)
self.assertTrue((workspace / "pipeline.mock.json").is_file())
self.assertIsInstance(json.loads((workspace / "brief.json").read_text(encoding="utf-8")), dict)
def test_collect_builds_local_evidence_pack(self) -> None:
root = Path(__file__).resolve().parents[1]
with tempfile.TemporaryDirectory() as temp:
output = Path(temp) / "sources.json"
with redirect_stdout(StringIO()):
code = main([
"collect",
"--root", str(root / "examples/corpus/llm-wiki-mini"),
"--query", "application-core Spring DI 수동 등록 이유",
"--top-k", "6",
"--output", str(output),
])
self.assertEqual(code, 0)
data = json.loads(output.read_text(encoding="utf-8"))
self.assertTrue(data["sources"])
self.assertEqual(
data["sources"][0]["path"],
"raw/branch-notes/feature-application-port-usecase-contract.md",
)
if __name__ == "__main__":
unittest.main()