from contextlib import redirect_stderr, redirect_stdout from io import StringIO import json from pathlib import Path import tempfile import unittest from aaisa.cli import main class CliTests(unittest.TestCase): def test_clean_scan_returns_zero(self) -> None: with tempfile.TemporaryDirectory() as directory: Path(directory, "safe.txt").write_text("ordinary content\n", encoding="utf-8") output = StringIO() with redirect_stdout(output): result = main(["scan", directory]) self.assertEqual(result, 0) self.assertEqual(json.loads(output.getvalue())["summary"]["finding_count"], 0) def test_finding_returns_one(self) -> None: with tempfile.TemporaryDirectory() as directory: Path(directory, "requirements.txt").write_text("requests>=2\n", encoding="utf-8") with redirect_stdout(StringIO()): self.assertEqual(main(["scan", directory]), 1) def test_missing_path_returns_two(self) -> None: with redirect_stderr(StringIO()): self.assertEqual(main(["scan", "/definitely/missing/aaisa-path"]), 2) if __name__ == "__main__": unittest.main()