From 21c6480b65528a98ac0e1e3855f3c78c1f9b7cbe Mon Sep 17 00:00:00 2001 From: Yuki Okita Date: Wed, 20 Aug 2025 10:55:47 +0900 Subject: Refac: Centralize storage file management (#4078) Co-authored-by: Taylor Mullen --- packages/cli/src/config/config.test.ts | 62 ++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 30 deletions(-) (limited to 'packages/cli/src/config/config.test.ts') diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts index 727f6fe1..c9426379 100644 --- a/packages/cli/src/config/config.test.ts +++ b/packages/cli/src/config/config.test.ts @@ -6,7 +6,6 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import * as os from 'os'; -import * as fs from 'fs'; import * as path from 'path'; import { ShellTool, EditTool, WriteFileTool } from '@google/gemini-cli-core'; import { loadCliConfig, parseArguments } from './config.js'; @@ -19,6 +18,38 @@ vi.mock('./trustedFolders.js', () => ({ isWorkspaceTrusted: vi.fn(), })); +vi.mock('fs', async (importOriginal) => { + const actualFs = await importOriginal(); + const pathMod = await import('path'); + const mockHome = '/mock/home/user'; + const MOCK_CWD1 = process.cwd(); + const MOCK_CWD2 = pathMod.resolve(pathMod.sep, 'home', 'user', 'project'); + + const mockPaths = new Set([ + MOCK_CWD1, + MOCK_CWD2, + pathMod.resolve(pathMod.sep, 'cli', 'path1'), + pathMod.resolve(pathMod.sep, 'settings', 'path1'), + pathMod.join(mockHome, 'settings', 'path2'), + pathMod.join(MOCK_CWD2, 'cli', 'path2'), + pathMod.join(MOCK_CWD2, 'settings', 'path3'), + ]); + + return { + ...actualFs, + mkdirSync: vi.fn(), + writeFileSync: vi.fn(), + existsSync: vi.fn((p) => mockPaths.has(p.toString())), + statSync: vi.fn((p) => { + if (mockPaths.has(p.toString())) { + return { isDirectory: () => true } as unknown as import('fs').Stats; + } + return (actualFs as typeof import('fs')).statSync(p as unknown as string); + }), + realpathSync: vi.fn((p) => p), + }; +}); + vi.mock('os', async (importOriginal) => { const actualOs = await importOriginal(); return { @@ -1441,35 +1472,6 @@ describe('loadCliConfig folderTrust', () => { }); }); -vi.mock('fs', async () => { - const actualFs = await vi.importActual('fs'); - const MOCK_CWD1 = process.cwd(); - const MOCK_CWD2 = path.resolve(path.sep, 'home', 'user', 'project'); - - const mockPaths = new Set([ - MOCK_CWD1, - MOCK_CWD2, - path.resolve(path.sep, 'cli', 'path1'), - path.resolve(path.sep, 'settings', 'path1'), - path.join(os.homedir(), 'settings', 'path2'), - path.join(MOCK_CWD2, 'cli', 'path2'), - path.join(MOCK_CWD2, 'settings', 'path3'), - ]); - - return { - ...actualFs, - existsSync: vi.fn((p) => mockPaths.has(p.toString())), - statSync: vi.fn((p) => { - if (mockPaths.has(p.toString())) { - return { isDirectory: () => true }; - } - // Fallback for other paths if needed, though the test should be specific. - return actualFs.statSync(p); - }), - realpathSync: vi.fn((p) => p), - }; -}); - describe('loadCliConfig with includeDirectories', () => { const originalArgv = process.argv; -- cgit v1.2.3