summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/core/src/tools/modifiable-tool.test.ts29
-rw-r--r--packages/core/src/tools/modifiable-tool.ts7
2 files changed, 30 insertions, 6 deletions
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');