feat(opencode_review): python fallback for summary fields
This commit is contained in:
@@ -859,3 +859,49 @@ def test_no_surface_response_zero_lenses_wording():
|
||||
summary, findings, _c, _r, _w, _rv, _tc = ai_review.parse_review_output(text)
|
||||
assert findings == []
|
||||
assert "after path filtering" in summary
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# _synthesize_summary_fields — Task 8: real Python fallback implementation
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
def test_synthesize_walkthrough_groups_findings_by_path():
|
||||
findings = [
|
||||
{"path": "a.py", "line": 1, "severity": "medium", "problem": "fix x"},
|
||||
{"path": "b.py", "line": 2, "severity": "high", "problem": "fix y"},
|
||||
]
|
||||
w, _, _ = oc._synthesize_summary_fields(findings, "")
|
||||
assert any("a.py" in line for line in w)
|
||||
assert any("b.py" in line for line in w)
|
||||
|
||||
|
||||
def test_synthesize_walkthrough_empty_when_no_findings_uses_changed_files():
|
||||
w, _, _ = oc._synthesize_summary_fields(
|
||||
[],
|
||||
"diff --git a/x.py b/x.py\n@@ -1 +1 @@\n-old\n+new\n+++ b/x.py\n",
|
||||
)
|
||||
assert any("x.py" in line for line in w)
|
||||
|
||||
|
||||
def test_synthesize_risk_verdict_critical():
|
||||
findings = [{"severity": "critical"}]
|
||||
_, rv, _ = oc._synthesize_summary_fields(findings, "")
|
||||
assert "Critical risk" in rv
|
||||
|
||||
|
||||
def test_synthesize_risk_verdict_clean():
|
||||
_, rv, _ = oc._synthesize_summary_fields([], "")
|
||||
assert "Low risk" in rv
|
||||
|
||||
|
||||
def test_synthesize_test_coverage_with_test_path():
|
||||
_, _, tc = oc._synthesize_summary_fields(
|
||||
[], "+diff\n", changed_paths=["pilot/foo.py", "tests/test_foo.py"])
|
||||
assert tc == "Tests changed"
|
||||
|
||||
|
||||
def test_synthesize_test_coverage_missing_tests():
|
||||
_, _, tc = oc._synthesize_summary_fields(
|
||||
[], "+diff\n", changed_paths=["pilot/foo.py"])
|
||||
assert "No tests for behavioral change" in tc
|
||||
|
||||
Reference in New Issue
Block a user