fix(test): test-7 验证校验失败时真的不写任何文件
Test 7 现同时放入一个合法的 override(btn.png)和一个孤儿 override(typo.png), 断言校验失败时连合法文件也没有被写入。 这样才能真正验证「校验全部通过之前,不能写任何文件」这条红线。 删除合成逻辑的 for 循环时此用例会在字节比较处失败。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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); }
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user