49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
const test = require('node:test');
|
||
const assert = require('node:assert/strict');
|
||
const fs = require('node:fs');
|
||
const os = require('node:os');
|
||
const path = require('node:path');
|
||
|
||
const { loadConfig } = require('../src/generator.js');
|
||
|
||
function withTempCwd(callback) {
|
||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'menav-icons-mode-test-'));
|
||
const originalCwd = process.cwd();
|
||
|
||
try {
|
||
process.chdir(tmpDir);
|
||
callback(tmpDir);
|
||
} finally {
|
||
process.chdir(originalCwd);
|
||
fs.rmSync(tmpDir, { recursive: true, force: true });
|
||
}
|
||
}
|
||
|
||
test('site.yml 的 icons.mode 应提升为顶层 icons.mode(manual 不应被默认 favicon 覆盖)', () => {
|
||
withTempCwd((tmpDir) => {
|
||
const defaultConfigDir = path.join(tmpDir, 'config', '_default');
|
||
fs.mkdirSync(defaultConfigDir, { recursive: true });
|
||
|
||
fs.writeFileSync(
|
||
path.join(defaultConfigDir, 'site.yml'),
|
||
['title: Test', 'icons:', ' mode: manual', ''].join('\n'),
|
||
'utf8'
|
||
);
|
||
|
||
const config = loadConfig();
|
||
assert.equal(config.icons.mode, 'manual');
|
||
});
|
||
});
|
||
|
||
test('未配置 icons.mode 时应回退为默认 favicon', () => {
|
||
withTempCwd((tmpDir) => {
|
||
const defaultConfigDir = path.join(tmpDir, 'config', '_default');
|
||
fs.mkdirSync(defaultConfigDir, { recursive: true });
|
||
|
||
fs.writeFileSync(path.join(defaultConfigDir, 'site.yml'), 'title: Test\n', 'utf8');
|
||
|
||
const config = loadConfig();
|
||
assert.equal(config.icons.mode, 'favicon');
|
||
});
|
||
});
|