mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
Refactor: Use config.getGeminiClient() for GeminiClient instantiation (#715)
This commit is contained in:
@@ -25,6 +25,7 @@ import { checkNextSpeaker } from '../utils/nextSpeakerChecker.js';
|
||||
import { reportError } from '../utils/errorReporting.js';
|
||||
import { GeminiChat } from './geminiChat.js';
|
||||
import { retryWithBackoff } from '../utils/retry.js';
|
||||
import { getErrorMessage } from '../utils/errors.js';
|
||||
|
||||
export class GeminiClient {
|
||||
private chat: Promise<GeminiChat>;
|
||||
@@ -158,8 +159,7 @@ export class GeminiClient {
|
||||
history,
|
||||
'startChat',
|
||||
);
|
||||
const message = error instanceof Error ? error.message : 'Unknown error.';
|
||||
throw new Error(`Failed to initialize chat: ${message}`);
|
||||
throw new Error(`Failed to initialize chat: ${getErrorMessage(error)}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,15 @@ describe('EditTool', () => {
|
||||
rootDir = path.join(tempDir, 'root');
|
||||
fs.mkdirSync(rootDir);
|
||||
|
||||
// The client instance that EditTool will use
|
||||
const mockClientInstanceWithGenerateJson = {
|
||||
generateJson: mockGenerateJson, // mockGenerateJson is already defined and hoisted
|
||||
};
|
||||
|
||||
mockConfig = {
|
||||
getGeminiClient: vi
|
||||
.fn()
|
||||
.mockReturnValue(mockClientInstanceWithGenerateJson),
|
||||
getTargetDir: () => rootDir,
|
||||
getApprovalMode: vi.fn(() => false),
|
||||
setApprovalMode: vi.fn(),
|
||||
|
||||
@@ -114,7 +114,7 @@ Expectation for required parameters:
|
||||
);
|
||||
this.config = config;
|
||||
this.rootDirectory = path.resolve(this.config.getTargetDir());
|
||||
this.client = new GeminiClient(this.config);
|
||||
this.client = config.getGeminiClient();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -53,6 +53,7 @@ const mockConfigInternal = {
|
||||
getTargetDir: () => rootDir,
|
||||
getApprovalMode: vi.fn(() => ApprovalMode.DEFAULT),
|
||||
setApprovalMode: vi.fn(),
|
||||
getGeminiClient: vi.fn(), // Initialize as a plain mock function
|
||||
getApiKey: () => 'test-key',
|
||||
getModel: () => 'test-model',
|
||||
getSandbox: () => false,
|
||||
@@ -97,6 +98,11 @@ describe('WriteFileTool', () => {
|
||||
) as Mocked<GeminiClient>;
|
||||
vi.mocked(GeminiClient).mockImplementation(() => mockGeminiClientInstance);
|
||||
|
||||
// Now that mockGeminiClientInstance is initialized, set the mock implementation for getGeminiClient
|
||||
mockConfigInternal.getGeminiClient.mockReturnValue(
|
||||
mockGeminiClientInstance,
|
||||
);
|
||||
|
||||
tool = new WriteFileTool(mockConfig);
|
||||
|
||||
// Reset mocks before each test
|
||||
|
||||
@@ -77,7 +77,7 @@ export class WriteFileTool extends BaseTool<WriteFileToolParams, ToolResult> {
|
||||
},
|
||||
);
|
||||
|
||||
this.client = new GeminiClient(this.config);
|
||||
this.client = this.config.getGeminiClient();
|
||||
}
|
||||
|
||||
private isWithinRoot(pathToCheck: string): boolean {
|
||||
|
||||
Reference in New Issue
Block a user