Files
OBLITERATUS/tests/test_quality_policy.py
T

97 lines
3.3 KiB
Python

"""Tests for quality-policy immutability and mature-scope measurement."""
from __future__ import annotations
from copy import deepcopy
from scripts import check_quality_policy as quality
def _policy():
return {
"minimums": dict(quality.BASELINE_FLOORS),
"mature_cpu_scope": {
"exclusions": [{
"path": "obliteratus/external.py",
"boundary": "network-service",
"rationale": "Requires a live external service.",
"conditional_issue": "https://github.com/elder-plinius/OBLITERATUS/issues/71",
"conditional_gate": "network-services",
}],
},
"threshold_exceptions": [],
}
def _coverage():
return {
"files": {
"obliteratus/pure.py": {
"summary": {
"num_statements": 100,
"covered_lines": 80,
"num_branches": 20,
"covered_branches": 15,
},
},
"obliteratus/external.py": {
"summary": {
"num_statements": 1000,
"covered_lines": 0,
"num_branches": 500,
"covered_branches": 0,
},
},
},
}
def test_policy_and_exact_mature_floors_pass():
policy = _policy()
assert quality.validate_policy(policy) == []
measurement, failures = quality.validate_mature_cpu_scope(_coverage(), policy)
assert failures == []
assert measurement["line_percent"] == 80
assert measurement["branch_percent"] == 75
def test_floor_regression_requires_structured_reviewed_exception():
policy = _policy()
policy["minimums"]["mutation_score"] = 69
assert quality.validate_policy(policy) == [
"quality minimum mutation_score cannot move below 70 without an explicit reviewed exception",
]
policy["threshold_exceptions"] = [{
"threshold": "mutation_score",
"new_value": 69,
"reason": "Temporary tool regression",
"approved_issue": "https://github.com/elder-plinius/OBLITERATUS/issues/999",
"expires": "2026-09-01",
}]
assert quality.validate_policy(policy) == []
def test_exclusions_require_unique_traceable_environment_boundaries():
policy = _policy()
duplicate = deepcopy(policy["mature_cpu_scope"]["exclusions"][0])
duplicate["rationale"] = ""
policy["mature_cpu_scope"]["exclusions"].append(duplicate)
failures = quality.validate_policy(policy)
assert "mature CPU exclusion path is duplicated: obliteratus/external.py" in failures
assert "mature CPU exclusion 1 requires non-empty rationale" in failures
def test_mature_scope_rejects_regression_and_stale_exclusion():
policy = _policy()
report = _coverage()
report["files"]["obliteratus/pure.py"]["summary"]["covered_lines"] = 79
_, failures = quality.validate_mature_cpu_scope(report, policy)
assert failures == [
"mature CPU line coverage 79.00% is below the 80.00% floor",
]
del report["files"]["obliteratus/external.py"]
_, failures = quality.measure_mature_cpu_scope(report, policy)
assert failures == [
"coverage report is missing excluded source file obliteratus/external.py",
]