test: reject malformed coverage metrics

This commit is contained in:
Joseph Magly
2026-08-14 11:44:12 -04:00
parent f17fd68f77
commit d5a02bd748
2 changed files with 19 additions and 1 deletions
+6 -1
View File
@@ -4,6 +4,7 @@ from __future__ import annotations
import argparse
import json
import math
from pathlib import Path
from typing import Any
@@ -23,7 +24,11 @@ def validate_coverage(
)
for label, key, minimum in metrics:
value = totals.get(key)
if not isinstance(value, (int, float)):
if (
isinstance(value, bool)
or not isinstance(value, (int, float))
or not math.isfinite(value)
):
failures.append(f"coverage report is missing numeric {key}")
elif value < minimum:
failures.append(
+13
View File
@@ -43,3 +43,16 @@ def test_validate_coverage_rejects_malformed_totals():
assert MODULE.validate_coverage(
{}, min_line=49.0, min_branch=36.0,
) == ["coverage report is missing the totals object"]
def test_validate_coverage_rejects_non_numeric_metrics():
report = _report()
report["totals"]["percent_statements_covered"] = True
report["totals"]["percent_branches_covered"] = float("nan")
assert MODULE.validate_coverage(
report, min_line=49.0, min_branch=36.0,
) == [
"coverage report is missing numeric percent_statements_covered",
"coverage report is missing numeric percent_branches_covered",
]