fix(skin): 修复最终评审发现的 6 处缺陷(junction 排除失效/meta 静默丢失等)
跨任务视角发现的问题:Critical1 materialize.mjs 的 junction 排除比较在 Windows 上因长路径前缀恒假、从未生效,且测试夹具的 junction 指向真源自身, 掩盖了此问题;Critical2 composeSkin 例外通道在 uuid 缺失/框架侧无 meta 时 静默失败,违反第二准则;Important3 可覆盖范围误把 theme/ 下的框架 TS 代码 也纳入;Important5 cli-entry 测试漏注册 check-skin/build-game;Important6 composeSkin 与 check-skin 各自拼路径,未共用 paths.mjs 权威推导;Important7 --platform 缺值时静默落到默认平台。逐条修复并补测试,Critical1 用诱饵框架 目录验证过能真正杀掉该 bug(变异推演见 fix report)。 spec §5 step5 的 dist/<name>/ 拷贝按要求标注为本期未实现,不实现。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ import { join } from 'node:path';
|
||||
import { existsSync } from 'node:fs';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { FRAMEWORK_UI_DIR, GAMES_DIR, gameOverrideDir } from './lib/paths.mjs';
|
||||
import { listAssets, validateOverrides } from './lib/skin.mjs';
|
||||
import { listCoverableAssets, validateOverrides } from './lib/skin.mjs';
|
||||
|
||||
/** 校验某子游戏的皮肤覆盖。opts 可注入路径用于测试。 */
|
||||
export function checkSkin(gameName, opts = {}) {
|
||||
@@ -16,7 +16,7 @@ export function checkSkin(gameName, opts = {}) {
|
||||
}
|
||||
// override 目录不存在 = 该子游戏不换肤,合法
|
||||
const { matched, errors } = validateOverrides(frameworkUiDir, gameOverrideDir(projectDir));
|
||||
return { matched, errors, frameworkTotal: listAssets(frameworkUiDir).length };
|
||||
return { matched, errors, frameworkTotal: listCoverableAssets(frameworkUiDir).length };
|
||||
}
|
||||
|
||||
// CLI 入口:有错误则退出码 1
|
||||
|
||||
Reference in New Issue
Block a user