Files
MoviePilot/tests/test_module_quality.py
DDSRem 2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00

63 lines
1.8 KiB
Python

"""
Module Integration Quality Scale 渐进门禁测试。
"""
from pathlib import Path
from app.runtime.extensions.module.quality import (
MODULE_QUALITY_PROFILES,
QUALITY_RULES,
ModuleQualityLevel,
get_module_quality_profile,
)
MODULE_ROOT = Path(__file__).parents[1] / "app" / "modules"
def test_every_module_has_quality_view_with_owner_and_reason() -> None:
"""
所有宿主模块都必须显式完成 assessed 登记,未知扩展才允许 legacy。
"""
modules = {
path.name
for path in MODULE_ROOT.iterdir()
if path.is_dir() and not path.name.startswith(("_", "."))
}
assert modules
assert modules == set(MODULE_QUALITY_PROFILES)
for module in modules:
profile = get_module_quality_profile(module)
assert profile.owner
assert profile.level is ModuleQualityLevel.ASSESSED
assert profile.exemption_reason
assert get_module_quality_profile("third-party-unknown").level is (
ModuleQualityLevel.LEGACY
)
def test_assessed_profiles_only_use_declared_rules() -> None:
"""
显式 profile 不得通过拼写新规则绕过统一质量维度。
"""
for profile in MODULE_QUALITY_PROFILES.values():
assert profile.verified_rules
assert profile.verified_rules <= QUALITY_RULES
def test_bangumi_changed_slice_meets_required_quality_rules() -> None:
"""
本轮修改的 Bangumi 模块必须满足配置快照切片相关门禁。
"""
profile = get_module_quality_profile("bangumi")
assert profile.level is ModuleQualityLevel.ASSESSED
assert {
"fake-client-or-fixture",
"zero-real-network-tests",
"reload-stop-idempotent",
"module-contract-v2",
"owner-declared",
} <= profile.verified_rules