diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 372f763d7..22b89a580 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,6 +110,7 @@ jobs: test: runs-on: ubuntu-22.04 + timeout-minutes: 30 steps: - uses: actions/checkout@v4 with: diff --git a/packages/coding-agent/test/tools/gh.test.ts b/packages/coding-agent/test/tools/gh.test.ts index 9bfcdb428..ea48c5857 100644 --- a/packages/coding-agent/test/tools/gh.test.ts +++ b/packages/coding-agent/test/tools/gh.test.ts @@ -64,7 +64,7 @@ function createToolContext(settings: Settings): AgentToolContext { function getCurrentHeadSha(): string { const result = Bun.spawnSync(["git", "rev-parse", "HEAD"], { - cwd: "/work/pi", + cwd: import.meta.dir, stdout: "pipe", stderr: "pipe", }); @@ -587,7 +587,7 @@ describe("GitHub CLI tools", () => { const updates: string[] = []; let latestUpdateDetails: GhToolDetails | undefined; - const tool = new GhRunWatchTool(createSession("/work/pi")); + const tool = new GhRunWatchTool(createSession(import.meta.dir)); vi.useFakeTimers(); const resultPromise = tool.execute("run-watch", {}, undefined, update => { const block = update.content[0]; diff --git a/packages/utils/src/abortable.ts b/packages/utils/src/abortable.ts index cb502dde3..f0fdcd715 100644 --- a/packages/utils/src/abortable.ts +++ b/packages/utils/src/abortable.ts @@ -12,9 +12,15 @@ export class AbortError extends Error { /** * Sleep for a given number of milliseconds, respecting abort signal. + * + * Uses setTimeout (not Bun.sleep) so that vitest fake timers can intercept it in tests. */ -export async function abortableSleep(ms: number, signal?: AbortSignal): Promise { - return untilAborted(signal, () => Bun.sleep(ms)); +export function abortableSleep(ms: number, signal?: AbortSignal): Promise { + return untilAborted(signal, () => { + const { promise, resolve } = Promise.withResolvers(); + setTimeout(resolve, ms); + return promise; + }); } /**