63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
import { mkdirSync, rmSync, writeFileSync, existsSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
import { tmpdir } from 'node:os';
|
|
import { randomUUID } from 'node:crypto';
|
|
|
|
import { loadProjectConfig, saveProjectConfig } from '../infra/config/project/projectConfig.js';
|
|
|
|
describe('project provider_profiles', () => {
|
|
let testDir: string;
|
|
|
|
beforeEach(() => {
|
|
testDir = join(tmpdir(), `takt-project-profile-${randomUUID()}`);
|
|
mkdirSync(testDir, { recursive: true });
|
|
});
|
|
|
|
afterEach(() => {
|
|
if (existsSync(testDir)) {
|
|
rmSync(testDir, { recursive: true, force: true });
|
|
}
|
|
});
|
|
|
|
it('loads provider_profiles from project config', () => {
|
|
const taktDir = join(testDir, '.takt');
|
|
mkdirSync(taktDir, { recursive: true });
|
|
writeFileSync(
|
|
join(taktDir, 'config.yaml'),
|
|
[
|
|
'piece: default',
|
|
'provider_profiles:',
|
|
' codex:',
|
|
' default_permission_mode: full',
|
|
' movement_permission_overrides:',
|
|
' implement: full',
|
|
].join('\n'),
|
|
'utf-8',
|
|
);
|
|
|
|
const config = loadProjectConfig(testDir);
|
|
|
|
expect(config.providerProfiles?.codex?.defaultPermissionMode).toBe('full');
|
|
expect(config.providerProfiles?.codex?.movementPermissionOverrides?.implement).toBe('full');
|
|
});
|
|
|
|
it('saves providerProfiles as provider_profiles', () => {
|
|
saveProjectConfig(testDir, {
|
|
piece: 'default',
|
|
providerProfiles: {
|
|
codex: {
|
|
defaultPermissionMode: 'full',
|
|
movementPermissionOverrides: {
|
|
fix: 'full',
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
const config = loadProjectConfig(testDir);
|
|
expect(config.providerProfiles?.codex?.defaultPermissionMode).toBe('full');
|
|
expect(config.providerProfiles?.codex?.movementPermissionOverrides?.fix).toBe('full');
|
|
});
|
|
});
|