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