File size: 1,601 Bytes
f0634fb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import { existsSync, mkdtempSync, rmSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { afterEach, describe, expect, it } from 'vitest';
import { ensureKimiHome, resolveConfigPath, resolveKimiHome } from '#/app/bootstrap/bootstrap';
describe('bootstrap path helpers', () => {
describe('resolveKimiHome', () => {
it('uses explicit homeDir when provided', () => {
expect(resolveKimiHome('/tmp/kimi')).toBe('/tmp/kimi');
});
it('falls back to KIMI_CODE_HOME env', () => {
const prev = process.env['KIMI_CODE_HOME'];
process.env['KIMI_CODE_HOME'] = '/env/kimi';
try {
expect(resolveKimiHome()).toBe('/env/kimi');
} finally {
if (prev === undefined) delete process.env['KIMI_CODE_HOME'];
else process.env['KIMI_CODE_HOME'] = prev;
}
});
});
describe('resolveConfigPath', () => {
it('uses explicit configPath when provided', () => {
expect(resolveConfigPath({ configPath: '/x/config.toml' })).toBe('/x/config.toml');
});
it('joins homeDir with config.toml', () => {
expect(resolveConfigPath({ homeDir: '/tmp/kimi' })).toBe('/tmp/kimi/config.toml');
});
});
describe('ensureKimiHome', () => {
let dir: string | undefined;
afterEach(() => {
if (dir) rmSync(dir, { recursive: true, force: true });
});
it('creates the directory with 0700 permissions', () => {
dir = join(mkdtempSync(join(tmpdir(), 'kimi-home-')), 'nested');
ensureKimiHome(dir);
expect(existsSync(dir)).toBe(true);
});
});
});
|