瀏覽代碼

test(opencode): defer provider timeout stalls

Dax Raad 2 月之前
父節點
當前提交
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(
   provideTmpdirServer(
     ({ llm }) =>
     ({ llm }) =>
       Effect.gen(function* () {
       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 provider = yield* Provider.Service
         const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model"))
         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(
   provideTmpdirServer(
     ({ llm }) =>
     ({ llm }) =>
       Effect.gen(function* () {
       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 provider = yield* Provider.Service
         const model = yield* provider.getModel(ProviderID.make("test"), ModelID.make("test-model"))
         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 }> {
 async function delayedHeaderServer(delay: number): Promise<{ server: Server; url: string }> {
   const server = createServer((_, res) => {
   const server = createServer((_, res) => {
     setTimeout(() => {
     setTimeout(() => {