from __future__ import annotations import subprocess import sys import unittest from tests.python.support.paths import repo_path class InspectCliWrapperTests(unittest.TestCase): def test_inspect_directory_invokes_cli(self) -> None: skill_root = repo_path("skills/cad") result = subprocess.run( [sys.executable, "scripts/inspect", "--help"], cwd=skill_root, check=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, ) self.assertEqual("", result.stderr) self.assertEqual(0, result.returncode) self.assertIn("usage: inspect", result.stdout) def test_inspect_help_does_not_import_heavy_cad_modules(self) -> None: skill_root = repo_path("skills/cad") code = ( "import sys; " "sys.path.insert(0, 'scripts/inspect'); " "import inspect_refs.cli; " "print('OCP.OCP' in sys.modules); " "print('cadpy.step_scene' in sys.modules)" ) result = subprocess.run( [sys.executable, "-c", code], cwd=skill_root, check=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, ) self.assertEqual("", result.stderr) self.assertEqual(0, result.returncode) self.assertEqual(["False", "False"], result.stdout.strip().splitlines()) def test_scripts_inspect_rejects_render_subcommand(self) -> None: skill_root = repo_path("skills/cad") result = subprocess.run( [sys.executable, "scripts/inspect", "render", "--help"], cwd=skill_root, check=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, ) self.assertEqual(2, result.returncode) self.assertIn("invalid choice", result.stderr) def test_scripts_inspect_worker_reads_jsonl(self) -> None: skill_root = repo_path("skills/cad") result = subprocess.run( [sys.executable, "scripts/inspect", "worker"], cwd=skill_root, input='{"id":"bad","argv":["refs"]}\n', check=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, ) self.assertEqual("", result.stderr) self.assertEqual(0, result.returncode) self.assertIn('"id":"bad"', result.stdout) self.assertIn('"exitCode":2', result.stdout) if __name__ == "__main__": unittest.main()