test_review_argparse.py file-level

at main · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:8 docs: queue board-identity follow-ups so they survive the session Capt… · aaronrene · Sep 5, 2026
1 """Unit tests for review CLI argument parsing (§K5.12)."""
2
3 from __future__ import annotations
4
5 import pytest
6
7 from adapters.errors import ConfigError
8 from cli.main import build_parser, main
9
10
11 def test_review_help_exits_zero() -> None:
12 assert main(["review", "--help"]) == 0
13
14
15 def test_missing_freeze_exits_usage() -> None:
16 assert main(["review"]) == 1
17
18
19 def test_unknown_review_flag_exits_usage() -> None:
20 assert main(["review", "--freeze", "docs/x.md", "--write-vcs"]) == 1
21
22
23 def test_vendor_model_slug_rejected() -> None:
24 from cli.kit_root import kit_root
25 from tools.freeze_reviewer.labels import is_vendor_slug, validate_reviewer_model
26
27 assert is_vendor_slug("gpt-4o")
28 with pytest.raises(ConfigError):
29 validate_reviewer_model("gpt-4o", kit_root())
30
31
32 def test_mode_human_with_provider_not_usage() -> None:
33 # Parser accepts; not a USAGE conflict per contract
34 parser = build_parser()
35 args = parser.parse_args(
36 ["review", "--freeze", "docs/x.md", "--mode", "human", "--provider", "api", "--model", "thinking-high"]
37 )
38 assert args.mode == "human"
39 assert args.provider == "api"