test_api_review_bounded.py python
52 lines 1.8 KB
Raw
sha256:0e9549ec7b463911bc08b7d586dc320b1ac9b1f5c943ee7e3865dcc6cb0f6f83 chore(governance): sync handover+roadmap to 84db8c8 (drift:… Human 1 day ago
1 """Performance bounds for API freeze review (K11)."""
2
3 from __future__ import annotations
4
5 import json
6 import time
7 from pathlib import Path
8
9 from cli.kit_root import kit_root
10 from tests.support import FakeHttpTransport, api_provider_factory, git_status_runner, run_cli, seed_freeze_repo
11 from tools.freeze_reviewer.providers.api_client import ReviewApiClient
12 from tools.freeze_reviewer.providers.base import ApiReviewProvider
13
14
15 def test_api_review_completes_within_budget(tmp_path: Path, monkeypatch) -> None:
16 monkeypatch.setenv("OVERSEER_REVIEW_API_KEY", "ci-key")
17 monkeypatch.setenv("OVERSEER_REVIEW_API_URL", "https://review.example.com/v1")
18 artifact = seed_freeze_repo(tmp_path, config_name="config-api-reviewer.yaml")
19 rel = artifact.relative_to(tmp_path).as_posix()
20 transport = FakeHttpTransport(review_body=json.dumps({"findings": []}).encode("utf-8"))
21 provider = ApiReviewProvider(client=ReviewApiClient(transport=transport))
22 calls = {"review": 0, "reachable": 0}
23 real_review = provider.review
24 real_reachable = provider.reachable
25
26 def review_wrap(**kwargs):
27 calls["review"] += 1
28 return real_review(**kwargs)
29
30 def reachable_wrap():
31 calls["reachable"] += 1
32 return real_reachable()
33
34 provider.review = review_wrap # type: ignore[method-assign]
35 provider.reachable = reachable_wrap # type: ignore[method-assign]
36
37 def factory(_name: str) -> ApiReviewProvider:
38 return provider
39
40 start = time.monotonic()
41 code = run_cli(
42 ["review", "--freeze", rel],
43 cwd=tmp_path,
44 runner=git_status_runner(),
45 kit=kit_root(),
46 review_provider_factory=factory,
47 )
48 elapsed = time.monotonic() - start
49 assert code == 0
50 assert elapsed < 5.0
51 assert calls["review"] <= 1
52 assert calls["reachable"] <= 1
File History 1 commit
sha256:6abcf1fa82a7a621ccbc945f19acdba5bc0db54569599404a1452fb4a096a199 fix(ISR): default require_independent_second_reviewer to require Human minor 1 day ago