test: make unsafe test coercion explicit

Move test coercion out of a hidden global and require each test to import the helper so review tools and runtime scripts can see the unsafe boundary.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-12 15:38:31 +09:00
parent ce5da13fc5
commit d5fbada13d
103 changed files with 700 additions and 554 deletions
+7 -6
View File
@@ -16,6 +16,7 @@ import {
import type { BoulderState } from "../../features/boulder-state"
import * as sessionState from "../../features/claude-code-session-state"
import * as worktreeDetector from "./worktree-detector"
import { unsafeTestValue } from "../../../test-support/unsafe-test-value"
describe("start-work hook", () => {
let testDir: string
@@ -738,7 +739,7 @@ You are starting a Sisyphus work session.
const promptAsyncMock = spyOn({
promptAsync: async (_request: unknown) => undefined,
}, "promptAsync")
const ctx = testCoerce<Parameters<typeof createAtlasHook>[0]>({
const ctx = unsafeTestValue<Parameters<typeof createAtlasHook>[0]>({
directory: testDir,
client: {
session: {
@@ -784,18 +785,18 @@ You are starting a Sisyphus work session.
promptAsync: async (_request: unknown) => undefined,
}, "promptAsync")
globalThis.setTimeout = testCoerce<typeof setTimeout>(((callback: Function, delay?: number, ...args: unknown[]) => {
globalThis.setTimeout = unsafeTestValue<typeof setTimeout>(((callback: Function, delay?: number, ...args: unknown[]) => {
const normalized = typeof delay === "number" ? delay : 0
if (normalized >= 5000) {
const id = nextTimerId++
capturedTimers.set(id, { callback: () => callback(...args), cleared: false })
return testCoerce<ReturnType<typeof setTimeout>>(id)
return unsafeTestValue<ReturnType<typeof setTimeout>>(id)
}
return originalSetTimeout(callback as Parameters<typeof originalSetTimeout>[0], delay)
}))
globalThis.clearTimeout = testCoerce<typeof clearTimeout>(((id?: number | ReturnType<typeof setTimeout>) => {
globalThis.clearTimeout = unsafeTestValue<typeof clearTimeout>(((id?: number | ReturnType<typeof setTimeout>) => {
if (typeof id === "number" && capturedTimers.has(id)) {
capturedTimers.get(id)!.cleared = true
capturedTimers.delete(id)
@@ -807,7 +808,7 @@ You are starting a Sisyphus work session.
Date.now = () => fakeNow
const ctx = testCoerce<Parameters<typeof createAtlasHook>[0]>({
const ctx = unsafeTestValue<Parameters<typeof createAtlasHook>[0]>({
directory: testDir,
client: {
session: {
@@ -820,7 +821,7 @@ You are starting a Sisyphus work session.
const startWorkHook = createStartWorkHook(ctx)
const atlasHook = createAtlasHook(ctx, {
directory: testDir,
backgroundManager: testCoerce<NonNullable<Parameters<typeof createAtlasHook>[1]>["backgroundManager"]>({
backgroundManager: unsafeTestValue<NonNullable<Parameters<typeof createAtlasHook>[1]>["backgroundManager"]>({
getTasksByParentSession: () => backgroundRunning ? [{ status: "running" }] : [],
}),
})