diff --git a/cocoscreator_projects/scripts/test/materialize.test.mjs b/cocoscreator_projects/scripts/test/materialize.test.mjs index 4c4f4ef..6d2a5bd 100644 --- a/cocoscreator_projects/scripts/test/materialize.test.mjs +++ b/cocoscreator_projects/scripts/test/materialize.test.mjs @@ -138,7 +138,9 @@ test('composeSkin 例外通道:override 自带 meta 时,uuid 被改回框架 test('composeSkin 校验不过时抛 SkinValidationError 且不写任何文件', () => { const s = scaffold(); try { - put(s.gameDir, 'assets/game/override/atlas-hall/typo.png', DEFAULT_BG); + // 同时放入一个合法的 override 和一个孤儿 override + put(s.gameDir, 'assets/game/override/atlas-hall/btn.png', SKINNED_BTN); // 合法:框架里有此文件 + put(s.gameDir, 'assets/game/override/atlas-hall/typo.png', DEFAULT_BG); // 孤儿:框架里无此文件 materialize(s.gameDir, s.frameworkSrc, s.dest); let validationErr; assert.throws(() => { @@ -150,10 +152,10 @@ test('composeSkin 校验不过时抛 SkinValidationError 且不写任何文件', } }, SkinValidationError); - // 验证错误中确实有 orphan 错误 + // 验证错误中确实有 orphan 错误指向孤儿文件 assert.ok(validationErr.errors.some(e => e.code === 'orphan' && e.path === 'atlas-hall/typo.png'), 'orphan 错误必须被检测'); - // 验证失败时不得部分写入 - assert.ok(readBinary(s.dest, 'assets/framework/ui/atlas-hall/btn.png').equals(DEFAULT_BTN), '失败时不得部分写入'); + // 验证即使合法的 btn.png 也没有被写入(校验失败时不得部分写入) + assert.ok(readBinary(s.dest, 'assets/framework/ui/atlas-hall/btn.png').equals(DEFAULT_BTN), '校验失败时不得部分写入:btn.png 应仍为框架默认值'); } finally { cleanup(s.root); } });