test(team-mode): isolate module mocks
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
/// <reference types="bun-types" />
|
/// <reference types="bun-types" />
|
||||||
|
|
||||||
import { afterEach, describe, expect, mock, test } from "bun:test"
|
import { afterAll, afterEach, describe, expect, mock, test } from "bun:test"
|
||||||
import { randomUUID } from "node:crypto"
|
import { randomUUID } from "node:crypto"
|
||||||
import { mkdir, rm, stat } from "node:fs/promises"
|
import { mkdir, rm, stat } from "node:fs/promises"
|
||||||
import { tmpdir } from "node:os"
|
import { tmpdir } from "node:os"
|
||||||
@@ -49,6 +49,10 @@ const { loadRuntimeState, saveRuntimeState } = await import("./team-state-store/
|
|||||||
const temporaryDirectories: string[] = []
|
const temporaryDirectories: string[] = []
|
||||||
type MockClient = ExecutorContext["client"] & { session: { get: ReturnType<typeof mock> } }
|
type MockClient = ExecutorContext["client"] & { session: { get: ReturnType<typeof mock> } }
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
mock.restore()
|
||||||
|
})
|
||||||
|
|
||||||
function createConfig(baseDir: string, overrides: Partial<TeamModeConfig> = {}): TeamModeConfig {
|
function createConfig(baseDir: string, overrides: Partial<TeamModeConfig> = {}): TeamModeConfig {
|
||||||
return TeamModeConfigSchema.parse({ enabled: true, base_dir: baseDir, max_wall_clock_minutes: 1, ...overrides })
|
return TeamModeConfigSchema.parse({ enabled: true, base_dir: baseDir, max_wall_clock_minutes: 1, ...overrides })
|
||||||
}
|
}
|
||||||
@@ -212,13 +216,12 @@ describe("team-mode integration", () => {
|
|||||||
})
|
})
|
||||||
return undefined
|
return undefined
|
||||||
})
|
})
|
||||||
const recordingClient = {
|
const ctx = createContext(baseDir, manager, new Set(["ses_lead"]))
|
||||||
|
const recordingClient: LiveDeliveryClient = {
|
||||||
session: {
|
session: {
|
||||||
get: mock(async ({ path: { id } }: { path: { id: string } }) => ({ data: { id } })),
|
|
||||||
promptAsync: promptAsyncSpy,
|
promptAsync: promptAsyncSpy,
|
||||||
},
|
},
|
||||||
} as ExecutorContext["client"] & LiveDeliveryClient
|
}
|
||||||
const ctx = { client: recordingClient, manager, directory: baseDir }
|
|
||||||
|
|
||||||
const runtime = await createTeamRun(createSpec("msg-team", "lead", [
|
const runtime = await createTeamRun(createSpec("msg-team", "lead", [
|
||||||
{ kind: "subagent_type", name: "lead", subagent_type: "sisyphus", backendType: "in-process", isActive: true },
|
{ kind: "subagent_type", name: "lead", subagent_type: "sisyphus", backendType: "in-process", isActive: true },
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/// <reference types="bun-types" />
|
/// <reference types="bun-types" />
|
||||||
|
|
||||||
import { describe, expect, mock, test } from "bun:test"
|
import { afterAll, describe, expect, mock, test } from "bun:test"
|
||||||
import { mkdir, mkdtemp, writeFile } from "node:fs/promises"
|
import { mkdir, mkdtemp, writeFile } from "node:fs/promises"
|
||||||
import { randomUUID } from "node:crypto"
|
import { randomUUID } from "node:crypto"
|
||||||
import { tmpdir } from "node:os"
|
import { tmpdir } from "node:os"
|
||||||
@@ -18,6 +18,10 @@ const { listUnreadMessages } = await import("./inbox")
|
|||||||
const { TeamModeConfigSchema } = await import("../../../config/schema/team-mode")
|
const { TeamModeConfigSchema } = await import("../../../config/schema/team-mode")
|
||||||
const { getInboxDir, resolveBaseDir } = await import("../team-registry/paths")
|
const { getInboxDir, resolveBaseDir } = await import("../team-registry/paths")
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
mock.restore()
|
||||||
|
})
|
||||||
|
|
||||||
async function createBaseDirectory(): Promise<string> {
|
async function createBaseDirectory(): Promise<string> {
|
||||||
return await mkdtemp(path.join(tmpdir(), "team-mailbox-inbox-"))
|
return await mkdtemp(path.join(tmpdir(), "team-mailbox-inbox-"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/// <reference types="bun-types" />
|
/// <reference types="bun-types" />
|
||||||
|
|
||||||
import { afterEach, describe, expect, mock, test } from "bun:test"
|
import { afterAll, afterEach, describe, expect, mock, test } from "bun:test"
|
||||||
import { randomUUID } from "node:crypto"
|
import { randomUUID } from "node:crypto"
|
||||||
import { readdir } from "node:fs/promises"
|
import { readdir } from "node:fs/promises"
|
||||||
import { tmpdir } from "node:os"
|
import { tmpdir } from "node:os"
|
||||||
@@ -22,6 +22,10 @@ mock.module("./ack", () => ({
|
|||||||
const { pollAndBuildInjection } = await import("./poll")
|
const { pollAndBuildInjection } = await import("./poll")
|
||||||
const { getInboxDir, resolveBaseDir } = await import("../team-registry/paths")
|
const { getInboxDir, resolveBaseDir } = await import("../team-registry/paths")
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
mock.restore()
|
||||||
|
})
|
||||||
|
|
||||||
function createConfig(baseDir: string) {
|
function createConfig(baseDir: string) {
|
||||||
return TeamModeConfigSchema.parse({ base_dir: baseDir })
|
return TeamModeConfigSchema.parse({ base_dir: baseDir })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/// <reference types="bun-types" />
|
/// <reference types="bun-types" />
|
||||||
|
|
||||||
import { afterEach, describe, expect, mock, test } from "bun:test"
|
import { afterAll, afterEach, describe, expect, mock, test } from "bun:test"
|
||||||
import { mkdtemp, mkdir, rm, stat, writeFile } from "node:fs/promises"
|
import { mkdtemp, mkdir, rm, stat, writeFile } from "node:fs/promises"
|
||||||
import { homedir, tmpdir } from "node:os"
|
import { homedir, tmpdir } from "node:os"
|
||||||
import path from "node:path"
|
import path from "node:path"
|
||||||
@@ -18,6 +18,10 @@ mock.module("../../../shared/logger", () => ({
|
|||||||
|
|
||||||
const { discoverTeamSpecs, ensureBaseDirs, resolveBaseDir } = await import("./paths")
|
const { discoverTeamSpecs, ensureBaseDirs, resolveBaseDir } = await import("./paths")
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
mock.restore()
|
||||||
|
})
|
||||||
|
|
||||||
async function createTemporaryRoot(): Promise<string> {
|
async function createTemporaryRoot(): Promise<string> {
|
||||||
return await mkdtemp(path.join(tmpdir(), "team-mode-paths-"))
|
return await mkdtemp(path.join(tmpdir(), "team-mode-paths-"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ describe("createTeamRun", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
|
mock.restore()
|
||||||
clearSessionTeamRunCleanupRegistry()
|
clearSessionTeamRunCleanupRegistry()
|
||||||
await Promise.all(temporaryDirectories.splice(0).map(async (directoryPath) => rm(directoryPath, { recursive: true, force: true })))
|
await Promise.all(temporaryDirectories.splice(0).map(async (directoryPath) => rm(directoryPath, { recursive: true, force: true })))
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { readFileSync } from "node:fs"
|
import { readFileSync } from "node:fs"
|
||||||
declare const require: (name: string) => any
|
declare const require: (name: string) => any
|
||||||
const { describe, expect, mock, test, beforeEach } = require("bun:test")
|
const { afterAll, beforeEach, describe, expect, mock, test } = require("bun:test")
|
||||||
import type { ExecutorContext } from "../../../tools/delegate-task/executor-types"
|
import type { ExecutorContext } from "../../../tools/delegate-task/executor-types"
|
||||||
import type { Member } from "../types"
|
import type { Member } from "../types"
|
||||||
|
|
||||||
@@ -14,7 +14,11 @@ mock.module("./resolve-member-dependencies", () => ({
|
|||||||
buildSystemContent: buildSystemContentMock,
|
buildSystemContent: buildSystemContentMock,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const { resolveMember, TeamMemberResolutionError } = await import("./resolve-member")
|
const { resolveMember, TeamMemberResolutionError } = await import(`./resolve-member?test=${Date.now()}`)
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
mock.restore()
|
||||||
|
})
|
||||||
|
|
||||||
function createExecutorContext(): ExecutorContext {
|
function createExecutorContext(): ExecutorContext {
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user