From dcb8b1bd7847ebc9b8ce57954e08b17c9d4f70f5 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Thu, 27 Aug 2026 22:02:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(test):=20test-7=20=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=A4=B1=E8=B4=A5=E6=97=B6=E7=9C=9F=E7=9A=84?= =?UTF-8?q?=E4=B8=8D=E5=86=99=E4=BB=BB=E4=BD=95=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test 7 现同时放入一个合法的 override(btn.png)和一个孤儿 override(typo.png), 断言校验失败时连合法文件也没有被写入。 这样才能真正验证「校验全部通过之前,不能写任何文件」这条红线。 删除合成逻辑的 for 循环时此用例会在字节比较处失败。 Co-Authored-By: Claude Opus 5 (1M context) --- .../scripts/test/materialize.test.mjs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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); } });