diff --git a/src/cli/run/runner.test.ts b/src/cli/run/runner.test.ts
index d37c00ebe..19b7079a3 100644
--- a/src/cli/run/runner.test.ts
+++ b/src/cli/run/runner.test.ts
@@ -1,14 +1,23 @@
///
-import { describe, it, expect, beforeEach, afterEach, vi } from "bun:test"
-import type { OhMyOpenCodeConfig } from "../../config"
-import { resolveRunAgent, waitForEventProcessorShutdown } from "./runner"
+import { afterEach, beforeEach, describe, expect, it, spyOn } from "bun:test"
+import { OhMyOpenCodeConfigSchema, type OhMyOpenCodeConfig } from "../../config"
+import { resolveRunAgent } from "./agent-resolver"
-const createConfig = (overrides: Partial = {}): OhMyOpenCodeConfig => ({
- ...overrides,
-})
+const createConfig = (overrides: Partial = {}): OhMyOpenCodeConfig =>
+ OhMyOpenCodeConfigSchema.parse(overrides)
describe("resolveRunAgent", () => {
+ let consoleLogSpy: ReturnType
+
+ beforeEach(() => {
+ consoleLogSpy = spyOn(console, "log").mockImplementation(() => {})
+ })
+
+ afterEach(() => {
+ consoleLogSpy.mockRestore()
+ })
+
it("uses CLI agent over env and config", () => {
// given
const config = createConfig({ default_run_agent: "prometheus" })
@@ -85,6 +94,7 @@ describe("resolveRunAgent", () => {
describe("waitForEventProcessorShutdown", () => {
it("returns quickly when event processor completes", async () => {
//#given
+ const { waitForEventProcessorShutdown } = await import("./runner")
const eventProcessor = new Promise((resolve) => {
setTimeout(() => {
resolve()
@@ -102,6 +112,7 @@ describe("waitForEventProcessorShutdown", () => {
it("times out and continues when event processor does not complete", async () => {
//#given
+ const { waitForEventProcessorShutdown } = await import("./runner")
const eventProcessor = new Promise(() => {})
const timeoutMs = 200
const start = performance.now()
@@ -118,10 +129,12 @@ describe("waitForEventProcessorShutdown", () => {
describe("run environment setup", () => {
let originalClient: string | undefined
let originalRunMode: string | undefined
+ let consoleErrorSpy: ReturnType
beforeEach(() => {
originalClient = process.env.OPENCODE_CLIENT
originalRunMode = process.env.OPENCODE_CLI_RUN_MODE
+ consoleErrorSpy = spyOn(console, "error").mockImplementation(() => {})
})
afterEach(() => {
@@ -135,15 +148,16 @@ describe("run environment setup", () => {
} else {
process.env.OPENCODE_CLI_RUN_MODE = originalRunMode
}
+ consoleErrorSpy.mockRestore()
})
it("sets OPENCODE_CLIENT to 'run' to exclude question tool from registry", async () => {
//#given
delete process.env.OPENCODE_CLIENT
- //#when - run() sets env vars synchronously before any async work
- const { run } = await import(`./runner?env-setup-${Date.now()}`)
- run({ message: "test" }).catch(() => {})
+ //#when
+ const { run } = await import("./runner")
+ await run({ message: "test", model: "invalid" })
//#then
expect(String(process.env.OPENCODE_CLIENT)).toBe("run")