Files
Claude-Code-Workflow/codex-lens/tests/test_cli_help.py

62 lines
1.7 KiB
Python

"""Smoke tests for CodexLens CLI help output.
These tests ensure that help text generation does not crash at import time
or during Click/Typer option parsing.
"""
from __future__ import annotations
import os
import subprocess
import sys
from pathlib import Path
from typer.testing import CliRunner
def _subprocess_env() -> dict[str, str]:
env = os.environ.copy()
codex_lens_root = Path(__file__).resolve().parents[1]
src_dir = codex_lens_root / "src"
existing = env.get("PYTHONPATH", "")
env["PYTHONPATH"] = str(src_dir) + (os.pathsep + existing if existing else "")
return env
def test_python_module_help_does_not_crash() -> None:
proc = subprocess.run(
[sys.executable, "-m", "codexlens", "--help"],
capture_output=True,
text=True,
encoding="utf-8",
errors="replace",
env=_subprocess_env(),
)
assert proc.returncode == 0, proc.stderr
assert "Traceback" not in (proc.stderr or "")
def test_typer_app_help_does_not_crash() -> None:
from codexlens.cli.commands import app
runner = CliRunner()
result = runner.invoke(app, ["--help"])
assert result.exit_code == 0, result.output
def test_extract_embedding_error_uses_details() -> None:
from codexlens.cli.commands import _extract_embedding_error
embed_result = {
"success": False,
"result": {
"details": [
{"index_path": "/tmp/a/_index.db", "success": False, "error": "Backend timeout"},
{"index_path": "/tmp/b/_index.db", "success": False, "error": "Rate limit"},
]
},
}
msg = _extract_embedding_error(embed_result)
assert "Unknown error" not in msg
assert "Backend timeout" in msg