78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
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()
|