Просмотр исходного кода

test(opencode): defer provider timeout stalls

Dax Raad 2 месяцев назад
Родитель
Сommit
654cbc1502
1 измененных файлов с 8 добавлено и 2 удалено
  1. 8 2
      packages/opencode/test/provider/header-timeout.test.ts

+ 8 - 2
packages/opencode/test/provider/header-timeout.test.ts

@@ -31,7 +31,7 @@ it.live("headerTimeout does not abort delayed SSE body after headers arrive", ()
   provideTmpdirServer(
     ({ llm }) =>
       Effect.gen(function* () {
-        yield* llm.push(reply().wait(Bun.sleep(250)).text("late").stop())
+        yield* llm.push(reply().wait(deferredSleep(250)).text("late").stop())
 
         const provider = yield* Provider.Service
         const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model"))
@@ -63,7 +63,7 @@ it.live("chunkTimeout raises a response stream error when SSE body stalls", () =
   provideTmpdirServer(
     ({ llm }) =>
       Effect.gen(function* () {
-        yield* llm.push(reply().wait(Bun.sleep(250)).text("late").stop())
+        yield* llm.push(reply().wait(deferredSleep(250)).text("late").stop())
 
         const provider = yield* Provider.Service
         const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model"))
@@ -192,6 +192,12 @@ function providerConfig(url: string, options: Record<string, unknown> = {}) {
   }
 }
 
+function deferredSleep(ms: number): PromiseLike<void> {
+  return {
+    then: (resolve, reject) => Bun.sleep(ms).then(resolve, reject),
+  }
+}
+
 async function delayedHeaderServer(delay: number): Promise<{ server: Server; url: string }> {
   const server = createServer((_, res) => {
     setTimeout(() => {