test_review_argparse.py python
39 lines 1.1 KB
Raw
sha256:0e9549ec7b463911bc08b7d586dc320b1ac9b1f5c943ee7e3865dcc6cb0f6f83 chore(governance): sync handover+roadmap to 84db8c8 (drift:… Human 2 days ago
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"
File History 1 commit
sha256:6abcf1fa82a7a621ccbc945f19acdba5bc0db54569599404a1452fb4a096a199 fix(ISR): default require_independent_second_reviewer to require Human minor 2 days ago