diff --git a/packages/backend/src/main.test.ts b/packages/backend/src/main.test.ts index 312f535a..3088a239 100644 --- a/packages/backend/src/main.test.ts +++ b/packages/backend/src/main.test.ts @@ -15,6 +15,10 @@ vi.mock('glob', () => ({ glob: vi.fn().mockReturnValue(['fake_index.zoekt']), })); +vi.mock('fs', () => ({ + existsSync: vi.fn().mockReturnValue(true), +})); + const createMockContext = (rootPath: string = '/app') => { return { configPath: path.join(rootPath, 'config.json'), @@ -159,7 +163,7 @@ test('deleteStaleRepository can delete a git repository', async () => { await deleteStaleRepository(repo, db, ctx); - expect(db.data.repos['github.com/sourcebot-dev/sourcebot']).toBeUndefined();; + expect(db.data.repos['github.com/sourcebot-dev/sourcebot']).toBeUndefined(); expect(rm).toHaveBeenCalledWith(`${ctx.reposPath}/github.com/sourcebot-dev/sourcebot`, { recursive: true, }); diff --git a/packages/backend/src/main.ts b/packages/backend/src/main.ts index 2942b003..8cb744b2 100644 --- a/packages/backend/src/main.ts +++ b/packages/backend/src/main.ts @@ -73,10 +73,10 @@ export const deleteStaleRepository = async (repo: Repository, db: Database, ctx: logger.info(`Deleting stale repository ${repo.id}:`); // Delete the checked out git repository (if applicable) - if (repo.vcs === "git") { + if (repo.vcs === "git" && existsSync(repo.path)) { logger.info(`\tDeleting git directory ${repo.path}...`); await rm(repo.path, { - recursive: true + recursive: true, }); } @@ -116,6 +116,10 @@ export const deleteStaleRepository = async (repo: Repository, db: Database, ctx: }); await Promise.all(indexFiles.map((file) => { + if (!existsSync(file)) { + return; + } + logger.info(`\tDeleting index file ${file}...`); return rm(file); }));