fix(core): ensure directory exists before writing conversation file (#18429)

Co-authored-by: godwiniheuwa <godwiniheuwa@users.noreply.github.com>
Co-authored-by: ruintheextinct <deepkarma001@gmail.com>
This commit is contained in:
Godwin Iheuwa
2026-02-18 21:13:54 +00:00
committed by GitHub
parent 0fa9e58ef8
commit 2f252a6657
2 changed files with 34 additions and 0 deletions
@@ -745,4 +745,36 @@ describe('ChatRecordingService', () => {
expect(result[1].functionResponse!.id).toBe(callId);
});
});
describe('ENOENT (missing directory) handling', () => {
it('should ensure directory exists before writing conversation file', () => {
chatRecordingService.initialize();
const mkdirSyncSpy = vi.spyOn(fs, 'mkdirSync');
const writeFileSyncSpy = vi.spyOn(fs, 'writeFileSync');
chatRecordingService.recordMessage({
type: 'user',
content: 'Hello after dir cleanup',
model: 'gemini-pro',
});
// mkdirSync should be called with the parent directory and recursive option
const conversationFile = chatRecordingService.getConversationFilePath()!;
expect(mkdirSyncSpy).toHaveBeenCalledWith(
path.dirname(conversationFile),
{ recursive: true },
);
// mkdirSync should be called before writeFileSync
const mkdirCallOrder = mkdirSyncSpy.mock.invocationCallOrder;
const writeCallOrder = writeFileSyncSpy.mock.invocationCallOrder;
const lastMkdir = mkdirCallOrder[mkdirCallOrder.length - 1];
const lastWrite = writeCallOrder[writeCallOrder.length - 1];
expect(lastMkdir).toBeLessThan(lastWrite);
mkdirSyncSpy.mockRestore();
writeFileSyncSpy.mockRestore();
});
});
});