Merge branch 'main' into feat/mcp-tui

This commit is contained in:
LaZzyMan 2026-03-06 14:27:56 +08:00
commit 7b227a7eb5
298 changed files with 28262 additions and 6219 deletions

View file

@ -548,6 +548,43 @@ describe('loadCliConfig', () => {
vi.restoreAllMocks();
});
it('should reset context file names to QWEN.md and AGENTS.md by default', async () => {
process.argv = ['node', 'script.js'];
const argv = await parseArguments();
const settings: Settings = {};
const setGeminiMdFilenameSpy = vi.spyOn(
ServerConfig,
'setGeminiMdFilename',
);
await loadCliConfig(settings, argv);
expect(setGeminiMdFilenameSpy).toHaveBeenCalledTimes(1);
expect(setGeminiMdFilenameSpy).toHaveBeenCalledWith([
ServerConfig.DEFAULT_CONTEXT_FILENAME,
ServerConfig.AGENT_CONTEXT_FILENAME,
]);
});
it('should use configured context file name when settings.context.fileName is set', async () => {
process.argv = ['node', 'script.js'];
const argv = await parseArguments();
const settings: Settings = {
context: {
fileName: 'CUSTOM_AGENTS.md',
},
};
const setGeminiMdFilenameSpy = vi.spyOn(
ServerConfig,
'setGeminiMdFilename',
);
await loadCliConfig(settings, argv);
expect(setGeminiMdFilenameSpy).toHaveBeenCalledTimes(1);
expect(setGeminiMdFilenameSpy).toHaveBeenCalledWith('CUSTOM_AGENTS.md');
});
it('should propagate stream-json formats to config', async () => {
process.argv = [
'node',
@ -567,6 +604,35 @@ describe('loadCliConfig', () => {
expect(config.getIncludePartialMessages()).toBe(true);
});
it('should reset context filenames to defaults when context.fileName is not configured', async () => {
process.argv = ['node', 'script.js'];
const argv = await parseArguments();
const settings: Settings = {};
const defaultContextFiles = ['QWEN.md', 'AGENTS.md'];
const getAllSpy = vi
.spyOn(ServerConfig, 'getAllGeminiMdFilenames')
.mockReturnValue(defaultContextFiles);
const setFilenameSpy = vi.spyOn(ServerConfig, 'setGeminiMdFilename');
await loadCliConfig(settings, argv);
expect(getAllSpy).toHaveBeenCalledTimes(1);
expect(setFilenameSpy).toHaveBeenCalledWith(defaultContextFiles);
});
it('should use context.fileName from settings when provided', async () => {
process.argv = ['node', 'script.js'];
const argv = await parseArguments();
const settings: Settings = { context: { fileName: 'CUSTOM_CONTEXT.md' } };
const getAllSpy = vi.spyOn(ServerConfig, 'getAllGeminiMdFilenames');
const setFilenameSpy = vi.spyOn(ServerConfig, 'setGeminiMdFilename');
await loadCliConfig(settings, argv);
expect(setFilenameSpy).toHaveBeenCalledWith('CUSTOM_CONTEXT.md');
expect(getAllSpy).not.toHaveBeenCalled();
});
it('should initialize native LSP service when enabled', async () => {
process.argv = ['node', 'script.js', '--experimental-lsp'];
const argv = await parseArguments();