feat(edit): Prevent no-op edits (#3520)
This commit is contained in:
parent
1969d805f2
commit
b4d00ab4fb
|
@ -608,6 +608,19 @@ describe('EditTool', () => {
|
|||
/User modified the `new_string` content/,
|
||||
);
|
||||
});
|
||||
|
||||
it('should return error if old_string and new_string are identical', async () => {
|
||||
const initialContent = 'This is some identical text.';
|
||||
fs.writeFileSync(filePath, initialContent, 'utf8');
|
||||
const params: EditToolParams = {
|
||||
file_path: filePath,
|
||||
old_string: 'identical',
|
||||
new_string: 'identical',
|
||||
};
|
||||
const result = await tool.execute(params, new AbortController().signal);
|
||||
expect(result.llmContent).toMatch(/No changes to apply/);
|
||||
expect(result.returnDisplay).toMatch(/No changes to apply/);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getDescription', () => {
|
||||
|
|
|
@ -246,6 +246,11 @@ Expectation for required parameters:
|
|||
display: `Failed to edit, expected ${expectedReplacements} ${occurenceTerm} but found ${occurrences}.`,
|
||||
raw: `Failed to edit, Expected ${expectedReplacements} ${occurenceTerm} but found ${occurrences} for old_string in file: ${params.file_path}`,
|
||||
};
|
||||
} else if (finalOldString === finalNewString) {
|
||||
error = {
|
||||
display: `No changes to apply. The old_string and new_string are identical.`,
|
||||
raw: `No changes to apply. The old_string and new_string are identical in file: ${params.file_path}`,
|
||||
};
|
||||
}
|
||||
} else {
|
||||
// Should not happen if fileExists and no exception was thrown, but defensively:
|
||||
|
|
Loading…
Reference in New Issue