from app.core.config import settings from app.utils import rust_accel class _DummyRustExtension: """ 测试用 Rust 扩展替身,用来验证总开关会阻止扩展调用。 """ @staticmethod def is_available() -> bool: """ 模拟 Rust 扩展基础能力可用。 """ return True @staticmethod def parse_filter_rule_fast(_expression: str) -> list: """ 如果总开关关闭后仍调用扩展,测试应立即失败。 """ raise AssertionError("Rust extension should not be called") def test_rust_accel_runtime_switch_disables_fast_paths(monkeypatch): """ RUST_ACCEL 关闭时,即便扩展可用也应回退到 Python 路径。 """ monkeypatch.setattr(settings, "RUST_ACCEL", False) monkeypatch.setattr(rust_accel, "_moviepilot_rust", _DummyRustExtension()) assert rust_accel.is_available() assert not rust_accel.is_enabled() assert rust_accel.parse_filter_rule("HDR") is None def test_rust_accel_status_reports_enabled_state(monkeypatch): """ 状态接口应同时体现扩展可用性和配置开关后的实际启用状态。 """ monkeypatch.setattr(settings, "RUST_ACCEL", True) monkeypatch.setattr(rust_accel, "_moviepilot_rust", _DummyRustExtension()) assert rust_accel.status()["available"] is True assert rust_accel.status()["enabled"] is True