diff --git a/src/features/background-agent/manager.test.ts b/src/features/background-agent/manager.test.ts index 44b4c0859..4553cf1cb 100644 --- a/src/features/background-agent/manager.test.ts +++ b/src/features/background-agent/manager.test.ts @@ -1,5 +1,5 @@ declare const require: (name: string) => any -const { describe, test, expect, beforeEach, afterEach } = require("bun:test") +const { describe, test, expect, beforeEach, afterEach, spyOn } = require("bun:test") import { tmpdir } from "node:os" import type { PluginInput } from "@opencode-ai/plugin" import type { BackgroundTask, ResumeInput } from "./types" @@ -2781,6 +2781,18 @@ describe("BackgroundManager - Non-blocking Queue Integration", () => { }) describe("BackgroundManager.checkAndInterruptStaleTasks", () => { + const originalDateNow = Date.now + let fixedTime: number + + beforeEach(() => { + fixedTime = Date.now() + spyOn(globalThis.Date, "now").mockReturnValue(fixedTime) + }) + + afterEach(() => { + Date.now = originalDateNow + }) + test("should NOT interrupt task running less than 30 seconds (min runtime guard)", async () => { const client = { session: { diff --git a/src/features/background-agent/task-poller.test.ts b/src/features/background-agent/task-poller.test.ts index a39a51b40..ec3d09a74 100644 --- a/src/features/background-agent/task-poller.test.ts +++ b/src/features/background-agent/task-poller.test.ts @@ -1,5 +1,5 @@ declare const require: (name: string) => any -const { describe, it, expect, mock } = require("bun:test") +const { describe, it, expect, mock, spyOn, beforeEach, afterEach } = require("bun:test") import { checkAndInterruptStaleTasks, pruneStaleTasksAndNotifications } from "./task-poller" import type { BackgroundTask } from "./types" @@ -29,6 +29,18 @@ describe("checkAndInterruptStaleTasks", () => { ...overrides, } } + const originalDateNow = Date.now + let fixedTime: number + + beforeEach(() => { + fixedTime = Date.now() + spyOn(globalThis.Date, "now").mockReturnValue(fixedTime) + }) + + afterEach(() => { + Date.now = originalDateNow + }) + it("should interrupt tasks with lastUpdate exceeding stale timeout", async () => { //#given