76 lines
2.3 KiB
TypeScript
76 lines
2.3 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 { vi } from 'vitest';
|
|
|
|
const testHomeDir = join(tmpdir(), `takt-gpp-test-${Date.now()}`);
|
|
|
|
vi.mock('node:os', async () => {
|
|
const actual = await vi.importActual('node:os');
|
|
return {
|
|
...actual,
|
|
homedir: () => testHomeDir,
|
|
};
|
|
});
|
|
|
|
const { loadGlobalConfig, saveGlobalConfig, invalidateGlobalConfigCache } = await import('../infra/config/global/globalConfig.js');
|
|
const { getGlobalConfigPath } = await import('../infra/config/paths.js');
|
|
|
|
describe('global provider_profiles', () => {
|
|
beforeEach(() => {
|
|
invalidateGlobalConfigCache();
|
|
mkdirSync(testHomeDir, { recursive: true });
|
|
});
|
|
|
|
afterEach(() => {
|
|
if (existsSync(testHomeDir)) {
|
|
rmSync(testHomeDir, { recursive: true });
|
|
}
|
|
});
|
|
|
|
it('loads provider_profiles from yaml', () => {
|
|
const taktDir = join(testHomeDir, '.takt');
|
|
mkdirSync(taktDir, { recursive: true });
|
|
writeFileSync(
|
|
getGlobalConfigPath(),
|
|
[
|
|
'language: en',
|
|
'provider_profiles:',
|
|
' codex:',
|
|
' default_permission_mode: full',
|
|
' movement_permission_overrides:',
|
|
' ai_fix: edit',
|
|
].join('\n'),
|
|
'utf-8',
|
|
);
|
|
|
|
const config = loadGlobalConfig();
|
|
|
|
expect(config.providerProfiles?.codex?.defaultPermissionMode).toBe('full');
|
|
expect(config.providerProfiles?.codex?.movementPermissionOverrides?.ai_fix).toBe('edit');
|
|
});
|
|
|
|
it('saves provider_profiles to yaml', () => {
|
|
const taktDir = join(testHomeDir, '.takt');
|
|
mkdirSync(taktDir, { recursive: true });
|
|
writeFileSync(getGlobalConfigPath(), 'language: en\n', 'utf-8');
|
|
|
|
const config = loadGlobalConfig();
|
|
config.providerProfiles = {
|
|
codex: {
|
|
defaultPermissionMode: 'full',
|
|
movementPermissionOverrides: {
|
|
supervise: 'full',
|
|
},
|
|
},
|
|
};
|
|
saveGlobalConfig(config);
|
|
invalidateGlobalConfigCache();
|
|
|
|
const reloaded = loadGlobalConfig();
|
|
expect(reloaded.providerProfiles?.codex?.defaultPermissionMode).toBe('full');
|
|
expect(reloaded.providerProfiles?.codex?.movementPermissionOverrides?.supervise).toBe('full');
|
|
});
|
|
});
|