batdetect2/tests/test_cli/test_base.py
2026-06-22 21:17:20 -06:00

59 lines
1.5 KiB
Python

"""Behavior-focused tests for top-level CLI command discovery."""
from pathlib import Path
from click.testing import CliRunner
from batdetect2.cli import cli
BASE_DIR = Path(__file__).parent.parent.parent
def test_cli_base_help_lists_main_commands() -> None:
"""User story: discover available workflows from top-level help."""
result = CliRunner().invoke(cli, ["--help"])
assert result.exit_code == 0
assert "--log-file" in result.output
assert "process" in result.output
assert "train" in result.output
assert "evaluate" in result.output
assert "data" in result.output
assert "detect" in result.output
def test_cli_writes_logs_to_file_and_terminal(
tmp_path: Path,
tiny_checkpoint_path: Path,
) -> None:
"""User story: save CLI logs to a file while keeping terminal output."""
output_dir = tmp_path / "eval_out"
log_file = tmp_path / "logs" / "cli.log"
result = CliRunner().invoke(
cli,
[
"--log-file",
str(log_file),
"-v",
"evaluate",
str(BASE_DIR / "example_data" / "dataset.yaml"),
"--model",
str(tiny_checkpoint_path),
"--base-dir",
str(BASE_DIR),
"--workers",
"0",
"--output-dir",
str(output_dir),
],
)
assert result.exit_code == 0
assert "Initiating evaluation process..." in result.output
assert log_file.exists()
assert "Initiating evaluation process..." in log_file.read_text()