版本隔离守卫(新套件立即抓出两处真实回流)
## 修掉渲染联测的嵌套实例目录
`test_render_bridge.py` 把实例写成 `<store>/instances/test-mcfold`。
而权威口径(mcview/lib/versions.cjs:59/61)是:
contentRoot = BASE/store/<key> 共享只读(jar/libraries/assets)
instanceDir = BASE/instances/<name> 实例独占(mods/config/options/saves)
⇒ 那是「一个版本的内容根里长出了实例态」。而版本隔离要防的崩因正是
「多实例共用 mods」—— 内层目录会把它重新引回来,而那条路径看起来完全合法。
改为 `BASE/instances/test-mcfold`。
## 新增 tests/test_version_isolation.py(4 项,默认套件里跑)
★ 它**不需要 JVM**(纯路径断言),所以必须落在默认测试里 ——
放进 `--with-render` 才跑的套件等于没守卫(大多数人不会加那个参数)。
✓ 三层同级(store/ · instances/ · runtime/ 是 BASE 下的兄弟)
✓ 内容根干净(无 instances/ 嵌套、无 mods/config/options.txt/saves)
✓ 测试实例归位(落在 instances/ 层,不在任何内容根下)
✓ 内容根无实例配置(查内容,不只查存在)
## ★ 守卫首次运行就抓出第二处(我此前漏掉的)
```
✗ 内容根被实例化:
- store/vanilla-1.21.1/instances/(内容根里嵌套了实例层)
```
内容是 `instances/default/{options.txt,downloads/log.json}`(生成态,
正式 `instances/default` 已存在)⇒ 已删。两个内容根现已干净。
⇒ 这条说明:**「我检查过了」不等于「有一条会自己跑的检查」** ——
我上一轮手工核实过 1.20.1 那处并修掉,却没发现 1.21.1 那处;
守卫一运行,两处一次全暴露。
## 验证
./run_tests.sh → 66 项
./run_tests.sh --with-render → **80 项全绿**
This commit is contained in:
@ -20,6 +20,14 @@ from mcfold.render import SECTION_VOLUME, WorldRenderer, parse_save_chunk
|
||||
|
||||
SAVE = Path("/home/mc-test/mc-test")
|
||||
STORE = Path("/home/newqqagent/mcview/store/vanilla-1.20.1")
|
||||
# ★ 实例目录是 store/ 的**兄弟**(不是嵌套在里面)。
|
||||
# 权威口径:mcview/lib/versions.cjs:59/61
|
||||
# contentRoot = BASE/store/<key> (共享只读:jar/libraries/assets)
|
||||
# instanceDir = BASE/instances/<name>(实例独占:mods/config/options/saves)
|
||||
# store 里再开一层 instances/ 会让「一个版本的内容根」多出实例态,
|
||||
# 正是版本隔离要防的那种回流。
|
||||
INSTANCES = Path("/home/newqqagent/mcview/instances")
|
||||
TEST_INSTANCE = INSTANCES / "test-mcfold"
|
||||
|
||||
|
||||
def _available() -> tuple[bool, str]:
|
||||
@ -42,7 +50,7 @@ def _open_backend():
|
||||
return None, why
|
||||
br = Gen_1_20(
|
||||
# ★ 用测试专用实例目录,不碰生产 default(版本隔离策略)
|
||||
game_dir=str(STORE / "instances" / "test-mcfold"),
|
||||
game_dir=str(TEST_INSTANCE),
|
||||
assets=str(STORE / "assets"), asset_index="1.20.1",
|
||||
)
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user