summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/ui/hooks/useShellHistory.test.ts25
-rw-r--r--packages/cli/src/ui/hooks/useShellHistory.ts5
2 files changed, 25 insertions, 5 deletions
diff --git a/packages/cli/src/ui/hooks/useShellHistory.test.ts b/packages/cli/src/ui/hooks/useShellHistory.test.ts
index 47fc5c62..8d030497 100644
--- a/packages/cli/src/ui/hooks/useShellHistory.test.ts
+++ b/packages/cli/src/ui/hooks/useShellHistory.test.ts
@@ -7,16 +7,30 @@
import { renderHook, act, waitFor } from '@testing-library/react';
import { useShellHistory } from './useShellHistory.js';
import * as fs from 'fs/promises';
-import path from 'path';
+import * as path from 'path';
+import * as os from 'os';
+import * as crypto from 'crypto';
vi.mock('fs/promises');
+vi.mock('os');
+vi.mock('crypto');
const MOCKED_PROJECT_ROOT = '/test/project';
-const MOCKED_HISTORY_DIR = path.join(MOCKED_PROJECT_ROOT, '.gemini');
+const MOCKED_HOME_DIR = '/test/home';
+const MOCKED_PROJECT_HASH = 'mocked_hash';
+
+const MOCKED_HISTORY_DIR = path.join(
+ MOCKED_HOME_DIR,
+ '.gemini',
+ 'tmp',
+ MOCKED_PROJECT_HASH,
+);
const MOCKED_HISTORY_FILE = path.join(MOCKED_HISTORY_DIR, 'shell_history');
describe('useShellHistory', () => {
const mockedFs = vi.mocked(fs);
+ const mockedOs = vi.mocked(os);
+ const mockedCrypto = vi.mocked(crypto);
beforeEach(() => {
vi.resetAllMocks();
@@ -24,6 +38,13 @@ describe('useShellHistory', () => {
mockedFs.readFile.mockResolvedValue('');
mockedFs.writeFile.mockResolvedValue(undefined);
mockedFs.mkdir.mockResolvedValue(undefined);
+ mockedOs.homedir.mockReturnValue(MOCKED_HOME_DIR);
+
+ const hashMock = {
+ update: vi.fn().mockReturnThis(),
+ digest: vi.fn().mockReturnValue(MOCKED_PROJECT_HASH),
+ };
+ mockedCrypto.createHash.mockReturnValue(hashMock as never);
});
it('should initialize and read the history file from the correct path', async () => {
diff --git a/packages/cli/src/ui/hooks/useShellHistory.ts b/packages/cli/src/ui/hooks/useShellHistory.ts
index 0b1c8d98..507a18de 100644
--- a/packages/cli/src/ui/hooks/useShellHistory.ts
+++ b/packages/cli/src/ui/hooks/useShellHistory.ts
@@ -7,14 +7,13 @@
import { useState, useEffect, useCallback } from 'react';
import * as fs from 'fs/promises';
import * as path from 'path';
-import { isNodeError } from '@gemini-cli/core';
+import { isNodeError, getProjectTempDir } from '@gemini-cli/core';
-const HISTORY_DIR = '.gemini';
const HISTORY_FILE = 'shell_history';
const MAX_HISTORY_LENGTH = 100;
async function getHistoryFilePath(projectRoot: string): Promise<string> {
- const historyDir = path.join(projectRoot, HISTORY_DIR);
+ const historyDir = getProjectTempDir(projectRoot);
return path.join(historyDir, HISTORY_FILE);
}