test_api_freeze_review_cycle.py file-level

at sha256:a · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:6 fix(ISR): default require_independent_second_reviewer to require Opera… · aaronrene · Sep 2, 2026
1 """E2E cycle for headless API freeze review (K11)."""
2
3 from __future__ import annotations
4
5 import json
6 from pathlib import Path
7
8 from cli.kit_root import kit_root
9 from tests.support import (
10 FakeHttpTransport,
11 api_provider_factory,
12 git_status_runner,
13 run_cli,
14 seed_freeze_repo,
15 )
16
17
18 def test_api_freeze_review_cycle_dry_run_then_stamp(tmp_path: Path, monkeypatch) -> None:
19 monkeypatch.setenv("OVERSEER_REVIEW_API_KEY", "ci-key")
20 monkeypatch.setenv("OVERSEER_REVIEW_API_URL", "https://review.example.com/v1")
21 artifact = seed_freeze_repo(tmp_path, config_name="config-api-reviewer.yaml")
22 rel = artifact.relative_to(tmp_path).as_posix()
23 transport = FakeHttpTransport(review_body=json.dumps({"findings": []}).encode("utf-8"))
24
25 dry_code = run_cli(
26 ["review", "--freeze", rel, "--dry-run", "--json"],
27 cwd=tmp_path,
28 runner=git_status_runner(),
29 kit=kit_root(),
30 review_provider_factory=api_provider_factory(transport),
31 json_mode=True,
32 )
33 assert dry_code == 0
34 before = artifact.read_bytes()
35
36 pass_code = run_cli(
37 ["review", "--freeze", rel, "--json"],
38 cwd=tmp_path,
39 runner=git_status_runner(),
40 kit=kit_root(),
41 review_provider_factory=api_provider_factory(transport),
42 json_mode=True,
43 )
44 assert pass_code == 0
45 after_first = artifact.read_bytes()
46 assert after_first != before
47
48 second_code = run_cli(
49 ["review", "--freeze", rel, "--json"],
50 cwd=tmp_path,
51 runner=git_status_runner(),
52 kit=kit_root(),
53 review_provider_factory=api_provider_factory(transport),
54 json_mode=True,
55 )
56 assert second_code == 0
57 assert artifact.read_bytes() == after_first