diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts index 95f334173e..47e9a4f03c 100644 --- a/packages/cli/src/config/config.test.ts +++ b/packages/cli/src/config/config.test.ts @@ -1893,3 +1893,81 @@ describe('loadCliConfig approval mode', () => { }); }); }); + +describe('loadCliConfig fileFiltering', () => { + const originalArgv = process.argv; + + beforeEach(() => { + vi.resetAllMocks(); + vi.mocked(os.homedir).mockReturnValue('/mock/home/user'); + vi.stubEnv('GEMINI_API_KEY', 'test-api-key'); + process.argv = ['node', 'script.js']; // Reset argv for each test + }); + + afterEach(() => { + process.argv = originalArgv; + vi.unstubAllEnvs(); + vi.restoreAllMocks(); + }); + + const testCases: Array<{ + property: keyof NonNullable; + getter: (config: ServerConfig.Config) => boolean; + value: boolean; + }> = [ + { + property: 'disableFuzzySearch', + getter: (c) => c.getFileFilteringDisableFuzzySearch(), + value: true, + }, + { + property: 'disableFuzzySearch', + getter: (c) => c.getFileFilteringDisableFuzzySearch(), + value: false, + }, + { + property: 'respectGitIgnore', + getter: (c) => c.getFileFilteringRespectGitIgnore(), + value: true, + }, + { + property: 'respectGitIgnore', + getter: (c) => c.getFileFilteringRespectGitIgnore(), + value: false, + }, + { + property: 'respectGeminiIgnore', + getter: (c) => c.getFileFilteringRespectGeminiIgnore(), + value: true, + }, + { + property: 'respectGeminiIgnore', + getter: (c) => c.getFileFilteringRespectGeminiIgnore(), + value: false, + }, + { + property: 'enableRecursiveFileSearch', + getter: (c) => c.getEnableRecursiveFileSearch(), + value: true, + }, + { + property: 'enableRecursiveFileSearch', + getter: (c) => c.getEnableRecursiveFileSearch(), + value: false, + }, + ]; + + it.each(testCases)( + 'should pass $property from settings to config when $value', + async ({ property, getter, value }) => { + const settings: Settings = { + context: { + fileFiltering: { [property]: value }, + }, + }; + const argv = await parseArguments(settings); + const config = await loadCliConfig(settings, [], 'test-session', argv); + expect(getter(config)).toBe(value); + }, + ); +}); diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 3977301235..8e047682d1 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -580,14 +580,7 @@ export async function loadCliConfig( outfile: argv.telemetryOutfile ?? settings.telemetry?.outfile, }, usageStatisticsEnabled: settings.privacy?.usageStatisticsEnabled ?? true, - // Git-aware file filtering settings - fileFiltering: { - respectGitIgnore: settings.context?.fileFiltering?.respectGitIgnore, - respectGeminiIgnore: settings.context?.fileFiltering?.respectGeminiIgnore, - enableRecursiveFileSearch: - settings.context?.fileFiltering?.enableRecursiveFileSearch, - disableFuzzySearch: settings.context?.fileFiltering?.disableFuzzySearch, - }, + fileFiltering: settings.context?.fileFiltering, checkpointing: argv.checkpointing || settings.general?.checkpointing?.enabled, proxy: