From b945680f7ea3acb204b14190a7fcaebf0f2b1641 Mon Sep 17 00:00:00 2001 From: Shakker Date: Sat, 9 May 2026 01:12:43 +0100 Subject: [PATCH] test: clear feishu drive cleanup timers --- extensions/feishu/src/drive.test.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/extensions/feishu/src/drive.test.ts b/extensions/feishu/src/drive.test.ts index 4e3345a2781..882739f7325 100644 --- a/extensions/feishu/src/drive.test.ts +++ b/extensions/feishu/src/drive.test.ts @@ -21,6 +21,22 @@ function createFeishuToolRuntime(): PluginRuntime { return {} as PluginRuntime; } +async function raceWithNextMacrotask(promise: Promise): Promise { + let timer: ReturnType | undefined; + try { + return await Promise.race([ + promise, + new Promise<"pending">((resolve) => { + timer = setTimeout(() => resolve("pending"), 0); + }), + ]); + } finally { + if (timer) { + clearTimeout(timer); + } + } +} + function createDriveToolApi(params: { config: OpenClawPluginApi["config"]; registerTool: OpenClawPluginApi["registerTool"]; @@ -559,10 +575,7 @@ describe("registerFeishuDriveTools", () => { action: "reply_comment", content: "ambient success", }); - const status = await Promise.race([ - replyCommentPromise.then(() => "done"), - new Promise((resolve) => setTimeout(() => resolve("pending"), 0)), - ]); + const status = await raceWithNextMacrotask(replyCommentPromise.then(() => "done")); expect(status).toBe("done"); expect(requestMock).toHaveBeenNthCalledWith( @@ -656,10 +669,7 @@ describe("registerFeishuDriveTools", () => { action: "add_comment", content: "ambient top-level comment", }); - const status = await Promise.race([ - addCommentPromise.then(() => "done"), - new Promise((resolve) => setTimeout(() => resolve("pending"), 0)), - ]); + const status = await raceWithNextMacrotask(addCommentPromise.then(() => "done")); expect(status).toBe("done"); expect(requestMock).toHaveBeenCalledWith(