"""开发资源必须明确注入,不能掩盖损坏的生产安装包。""" import pytest from muse import 资源加载 from muse.共享.错误 import 资源缺失错误 from muse.资源加载 import 使用资源提供器, 安装包资源提供器 @pytest.mark.case_id("NC-resource-source-is-not-release") def test_源资源身份不能冒充发布安装(源码资源): 清单 = 源码资源.加载清单() assert 清单["资源来源"] == "开发源码" assert 清单["代码哈希"] == "development-not-an-installation" 清单["资源"].clear() assert 源码资源.加载清单()["资源"] @pytest.mark.case_id("NC-resource-explicit-context-restores") def test_嵌套注入退出恢复原资源(源码资源): class 小输入: def 加载清单(self): return {"资源": {"合成": {}}} def 打开资源(self, 名称): assert 名称 == "合成" return b"fixture" def 核对资源(self): return self.加载清单() with 使用资源提供器(小输入()): assert 资源加载.打开资源("合成") == b"fixture" assert 资源加载.加载清单() == 源码资源.加载清单() @pytest.mark.case_id("NC-resource-package-never-falls-back") def test_生产提供器缺资源不回退源码(monkeypatch, 源码资源): def 缺包(_): raise ModuleNotFoundError("synthetic absent package") monkeypatch.setattr(资源加载.resources, "files", 缺包) with 使用资源提供器(源码资源): assert 资源加载.读取能力目录()["role"] with pytest.raises(资源缺失错误, match="缺少资源目录"): 安装包资源提供器().加载清单()