diff --git a/packages/core/src/tools/modifiable-tool.test.ts b/packages/core/src/tools/modifiable-tool.test.ts index 850da02b..d2672920 100644 --- a/packages/core/src/tools/modifiable-tool.test.ts +++ b/packages/core/src/tools/modifiable-tool.test.ts @@ -326,7 +326,7 @@ describe('modifyWithEditor', () => { consoleErrorSpy.mockRestore(); }); - it('should create temp files with correct naming', async () => { + it('should create temp files with correct naming with extension', async () => { const testFilePath = path.join(tempDir, 'subfolder', 'test-file.txt'); mockModifyContext.getFilePath = vi.fn().mockReturnValue(testFilePath); @@ -343,8 +343,31 @@ describe('modifyWithEditor', () => { const oldFilePath = writeFileCalls[0][0]; const newFilePath = writeFileCalls[1][0]; - expect(oldFilePath).toMatch(/gemini-cli-modify-test-file\.txt-old-\d+$/); - expect(newFilePath).toMatch(/gemini-cli-modify-test-file\.txt-new-\d+$/); + expect(oldFilePath).toMatch(/gemini-cli-modify-test-file-old-\d+\.txt$/); + expect(newFilePath).toMatch(/gemini-cli-modify-test-file-new-\d+\.txt$/); + expect(oldFilePath).toContain(`${tempDir}/gemini-cli-tool-modify-diffs/`); + expect(newFilePath).toContain(`${tempDir}/gemini-cli-tool-modify-diffs/`); + }); + + it('should create temp files with correct naming without extension', async () => { + const testFilePath = path.join(tempDir, 'subfolder', 'test-file'); + mockModifyContext.getFilePath = vi.fn().mockReturnValue(testFilePath); + + await modifyWithEditor( + mockParams, + mockModifyContext, + 'vscode' as EditorType, + abortSignal, + ); + + const writeFileCalls = (fs.writeFileSync as Mock).mock.calls; + expect(writeFileCalls).toHaveLength(2); + + const oldFilePath = writeFileCalls[0][0]; + const newFilePath = writeFileCalls[1][0]; + + expect(oldFilePath).toMatch(/gemini-cli-modify-test-file-old-\d+$/); + expect(newFilePath).toMatch(/gemini-cli-modify-test-file-new-\d+$/); expect(oldFilePath).toContain(`${tempDir}/gemini-cli-tool-modify-diffs/`); expect(newFilePath).toContain(`${tempDir}/gemini-cli-tool-modify-diffs/`); }); diff --git a/packages/core/src/tools/modifiable-tool.ts b/packages/core/src/tools/modifiable-tool.ts index e935a704..419aafeb 100644 --- a/packages/core/src/tools/modifiable-tool.ts +++ b/packages/core/src/tools/modifiable-tool.ts @@ -58,15 +58,16 @@ function createTempFilesForModify( fs.mkdirSync(diffDir, { recursive: true }); } - const fileName = path.basename(file_path); + const ext = path.extname(file_path); + const fileName = path.basename(file_path, ext); const timestamp = Date.now(); const tempOldPath = path.join( diffDir, - `gemini-cli-modify-${fileName}-old-${timestamp}`, + `gemini-cli-modify-${fileName}-old-${timestamp}${ext}`, ); const tempNewPath = path.join( diffDir, - `gemini-cli-modify-${fileName}-new-${timestamp}`, + `gemini-cli-modify-${fileName}-new-${timestamp}${ext}`, ); fs.writeFileSync(tempOldPath, currentContent, 'utf8');