ci: enforce complexity reduction ratchet

This commit is contained in:
jxxghp
2026-08-21 22:23:37 +08:00
parent 59fa3c0e74
commit dd246fe045
5 changed files with 210 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
"""复杂度只降不增 ratchet 测试。"""
from scripts.architecture.complexity import compare_complexity
def test_complexity_ratchet_allows_removal_and_reduction() -> None:
"""既有超限入口被删除或缩短必须允许合并。"""
baseline = {
"api_endpoint": {"app/api/endpoints/a.py:large": 100},
"application_public": {"app/application/a.py:Service.run": 180},
"chain_public": {},
}
current = {
"api_endpoint": {"app/api/endpoints/a.py:large": 90},
"application_public": {},
"chain_public": {},
}
assert compare_complexity(baseline, current) == []
def test_complexity_ratchet_rejects_growth_and_new_oversize() -> None:
"""既有入口增长和新增超预算入口必须同时给出精确诊断。"""
baseline = {
"api_endpoint": {"app/api/endpoints/a.py:large": 100},
"application_public": {},
"chain_public": {},
}
current = {
"api_endpoint": {
"app/api/endpoints/a.py:large": 101,
"app/api/endpoints/b.py:new_endpoint": 81,
},
"application_public": {},
"chain_public": {},
}
problems = compare_complexity(baseline, current)
assert any("既有超限增长" in problem for problem in problems)
assert any("新增超限" in problem for problem in problems)