Skip to content

Commit d6df0f9

Browse files
committed
fix: resolve unhandled promise rejections in OpenAI embedder tests
- Switch to real timers for non-rate-limit error retry tests - Prevents async promise rejections from being detected as unhandled - Fixes failing CI tests on Ubuntu and Windows platforms
1 parent 2d15f06 commit d6df0f9

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

src/services/code-index/embedders/__tests__/openai.spec.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -505,19 +505,18 @@ describe("OpenAiEmbedder", () => {
505505
// Always reject with auth error
506506
mockWithResponse.mockRejectedValue(authError)
507507

508-
const resultPromise = embedder.createEmbeddings(testTexts)
509-
510-
// Fast-forward through all retry delays
511-
for (let i = 0; i < MAX_BATCH_RETRIES - 1; i++) {
512-
await vitest.advanceTimersByTimeAsync(INITIAL_RETRY_DELAY_MS * Math.pow(2, i))
513-
}
508+
// Use real timers for this test to avoid unhandled promise rejection issues
509+
vitest.useRealTimers()
514510

515-
await expect(resultPromise).rejects.toThrow(
511+
await expect(embedder.createEmbeddings(testTexts)).rejects.toThrow(
516512
"Failed to create embeddings: Authentication failed. Please check your OpenAI API key.",
517513
)
518514

519515
expect(mockEmbeddingsCreate).toHaveBeenCalledTimes(MAX_BATCH_RETRIES)
520516
expect(console.warn).not.toHaveBeenCalledWith(expect.stringContaining("Rate limit hit"))
517+
518+
// Re-enable fake timers for other tests
519+
vitest.useFakeTimers()
521520
})
522521

523522
it("should retry non-rate-limit errors up to MAX_RETRIES", async () => {
@@ -534,14 +533,10 @@ describe("OpenAiEmbedder", () => {
534533
mockWithResponse.mockRejectedValueOnce(serverError)
535534
}
536535

537-
const resultPromise = embedder.createEmbeddings(testTexts)
538-
539-
// Fast-forward through all retry delays
540-
for (let i = 0; i < MAX_BATCH_RETRIES - 1; i++) {
541-
await vitest.advanceTimersByTimeAsync(INITIAL_RETRY_DELAY_MS * Math.pow(2, i))
542-
}
536+
// Use real timers for this test to avoid unhandled promise rejection issues
537+
vitest.useRealTimers()
543538

544-
await expect(resultPromise).rejects.toThrow(
539+
await expect(embedder.createEmbeddings(testTexts)).rejects.toThrow(
545540
"Failed to create embeddings after 3 attempts: HTTP 500 - Internal server error",
546541
)
547542

@@ -551,6 +546,9 @@ describe("OpenAiEmbedder", () => {
551546
expect.stringContaining("OpenAI embedder error"),
552547
expect.stringContaining("Internal server error"),
553548
)
549+
550+
// Re-enable fake timers for other tests
551+
vitest.useFakeTimers()
554552
})
555553
})
556554

0 commit comments

Comments
 (0)