document_redaction / test /test_cli_smoke.py
seanpedrickcase's picture
Sync: Updated skills, docker compose. Minor fix to preview_boxes api route
d0ca26d
"""CLI entrypoint smoke tests (fast). Optional integration tests are marked."""
from __future__ import annotations
import os
import subprocess
import sys
from pathlib import Path
import pytest
REPO_ROOT = Path(__file__).resolve().parents[1]
def test_cli_redact_help_exits_zero():
"""Ensure the installed entrypoint responds to --help."""
result = subprocess.run(
[sys.executable, str(REPO_ROOT / "cli_redact.py"), "--help"],
cwd=str(REPO_ROOT),
capture_output=True,
text=True,
timeout=60,
)
assert result.returncode == 0, result.stderr
assert "usage" in (result.stdout + result.stderr).lower()
def test_cli_redact_module_help_exits_zero():
"""Same as --help via python -m (packaging smoke)."""
result = subprocess.run(
[sys.executable, "-m", "cli_redact", "--help"],
cwd=str(REPO_ROOT),
capture_output=True,
text=True,
timeout=60,
)
assert result.returncode == 0, result.stderr
@pytest.mark.integration
def test_cli_redact_smoke_pdf_local_text_optional(tmp_path):
"""
End-to-end redact on a small example PDF (Local text path), only when enabled.
Set PYTEST_CLI_INTEGRATION=1 and ensure the repo is installed with dependencies.
Skips by default to keep CI fast unless the env var is set.
"""
if os.environ.get("PYTEST_CLI_INTEGRATION") != "1":
pytest.skip("Set PYTEST_CLI_INTEGRATION=1 to run CLI PDF smoke test")
pdf = REPO_ROOT / "example_data" / "graduate-job-example-cover-letter.pdf"
if not pdf.is_file():
pytest.skip(f"Example PDF not found: {pdf}")
out_dir = tmp_path / "out"
out_dir.mkdir()
result = subprocess.run(
[
sys.executable,
str(REPO_ROOT / "cli_redact.py"),
"--task",
"redact",
"--input_file",
str(pdf),
"--output_dir",
str(out_dir),
"--input_dir",
str(REPO_ROOT / "example_data"),
"--ocr_method",
"Local text",
"--pii_detector",
"Local",
],
cwd=str(REPO_ROOT),
capture_output=True,
text=True,
timeout=600,
)
assert result.returncode == 0, result.stdout + "\n" + result.stderr