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) if __name__ == "__main__": unittest.main()