This commit is contained in:
2026-09-20 23:35:03 +08:00
parent 941ce4baab
commit 388c700996
19 changed files with 393 additions and 71 deletions

View File

@@ -136,6 +136,33 @@ check('defaultDataDir: D 盘可用时首选 D 盘(契约保留)', () => {
}
});
// ---------- main.js 源码级契约:兜底状态下 openDb/openFavDb 不能 mkdir 坏目录 ----------
// 启动时 dataDir 不可用会切到 sessionDataDir 兜底,但 openDb/openFavDb 如果
// mkdir 的是裸 appConfig.dataDir(坏目录),mkdirSync 直接抛 ENOENT ——
// 兜底逻辑被这一行废掉,照样弹「启动失败」。pin 住:两个函数都必须 mkdir
// effectiveDataDir()(含 session 兜底)。
{
const mainSrc = fs.readFileSync(path.join(__dirname, '..', 'main.js'), 'utf8');
const openDbFn = mainSrc.match(/function openDb\(\) \{[\s\S]*?\n\}/);
const openFavDbFn = mainSrc.match(/function openFavDb\(\) \{[\s\S]*?\n\}/);
check('openDb mkdir effectiveDataDir()(含 session 兜底),不是裸 appConfig.dataDir', () => {
assert.ok(openDbFn, '找不到 openDb 函数');
assert.ok(
/mkdirSync\(\s*effectiveDataDir\(\s*\)/.test(openDbFn[0]),
'openDb 仍在 mkdir appConfig.dataDir —— 配置目录不可用时兜底失效,启动照样失败'
);
});
check('openFavDb mkdir effectiveDataDir()(含 session 兜底),不是裸 appConfig.dataDir', () => {
assert.ok(openFavDbFn, '找不到 openFavDb 函数');
assert.ok(
/mkdirSync\(\s*effectiveDataDir\(\s*\)/.test(openFavDbFn[0]),
'openFavDb 仍在 mkdir appConfig.dataDir —— 配置目录不可用时兜底失效,启动照样失败'
);
});
}
// 清理
fs.rmSync(tmpHome, { recursive: true, force: true });
console.log(`\n${passed} checks passed`);