test_review_argparse.py python
39 lines 1.1 KB
Raw
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 9 hours 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 2 commits
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 9 hours ago
sha256:4671b7f787ddbe63ced31c895b688c77ab495653b65a730b423329f26b3c1439 feat: K1-P1 complete — agent provenance, build-verification… Sonnet 4.6 patch 52 days ago