test: 隔离单测中的站点原生资源 (#6452)

* test: isolate native site resources

* refactor(test): retain sites stub helper contract

* fix(test): preserve sites stub probe imports

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
This commit is contained in:
InfinityPacer
2026-08-25 16:26:46 +08:00
committed by GitHub
co-authored by jxxghp
parent f3622de82e
commit c727d9c9f1
10 changed files with 31 additions and 49 deletions
+17 -15
View File
@@ -9,28 +9,30 @@ from pathlib import Path
from app.testing import bootstrap
def test_install_sites_stub_replaces_loaded_dynamic_resource(monkeypatch):
def test_ensure_sites_stub_replaces_loaded_dynamic_resource(monkeypatch):
"""隔离探针必须覆盖本机资源模块,保证 source-only CI 与开发机前提一致。"""
real_module = types.ModuleType("app.application.site.sites")
real_module.SitesHelper = object
monkeypatch.setitem(sys.modules, "app.application.site.sites", real_module)
bootstrap.install_sites_stub()
installed = sys.modules["app.application.site.sites"]
assert installed is not real_module
assert installed.SitesHelper is bootstrap._SitesHelperStub
def test_ensure_sites_stub_preserves_loaded_dynamic_resource(monkeypatch):
"""常规测试引导仍应优先复用已经加载的真实站点资源。"""
real_module = types.ModuleType("app.application.site.sites")
real_module.SitesHelper = object
monkeypatch.setitem(sys.modules, "app.application.site.sites", real_module)
bootstrap.ensure_sites_stub()
assert sys.modules["app.application.site.sites"] is real_module
installed = sys.modules["app.application.site.sites"]
assert installed is not real_module
assert installed.SitesHelper is bootstrap._SitesHelperStub
def test_prepare_backend_replaces_loaded_dynamic_resource(monkeypatch):
"""普通测试引导必须隔离源码目录中已存在的站点原生制品。"""
real_module = types.ModuleType("app.application.site.sites")
real_module.SitesHelper = object
monkeypatch.setitem(sys.modules, "app.application.site.sites", real_module)
bootstrap.prepare_backend()
installed = sys.modules["app.application.site.sites"]
assert installed is not real_module
assert installed.SitesHelper is bootstrap._SitesHelperStub
def test_isolate_config_cleanup_uses_loaded_db_module_without_late_import(monkeypatch):