test(background-agent): isolate logger mocks
This commit is contained in:
@@ -1,15 +1,12 @@
|
||||
import { afterAll, beforeEach, describe, expect, mock, test } from "bun:test"
|
||||
import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test"
|
||||
|
||||
const logMock = mock(() => {})
|
||||
|
||||
mock.module("../../shared/logger", () => ({
|
||||
log: logMock,
|
||||
}))
|
||||
|
||||
import type { OpencodeClient } from "./opencode-client"
|
||||
import type { abortWithTimeout as abortWithTimeoutFunction } from "./abort-with-timeout"
|
||||
|
||||
const { abortWithTimeout } = await import("./abort-with-timeout")
|
||||
mock.restore()
|
||||
let abortWithTimeout: typeof abortWithTimeoutFunction
|
||||
let importCounter = 0
|
||||
|
||||
function createClient(abort: (...args: Array<unknown>) => Promise<unknown>): OpencodeClient {
|
||||
return {
|
||||
@@ -20,11 +17,16 @@ function createClient(abort: (...args: Array<unknown>) => Promise<unknown>): Ope
|
||||
}
|
||||
|
||||
describe("abortWithTimeout", () => {
|
||||
beforeEach(() => {
|
||||
beforeEach(async () => {
|
||||
logMock.mockClear()
|
||||
mock.module("../../shared/logger", () => ({
|
||||
log: logMock,
|
||||
}))
|
||||
;({ abortWithTimeout } = await import(`./abort-with-timeout?test=${importCounter}`))
|
||||
importCounter += 1
|
||||
})
|
||||
|
||||
afterAll(() => {
|
||||
afterEach(() => {
|
||||
mock.restore()
|
||||
})
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ type CleanupManager = {
|
||||
// This prevents bun test from exiting with non-zero code if any test
|
||||
// called scheduleForcedExit() with exitCode=1
|
||||
afterAll(() => {
|
||||
mock.restore()
|
||||
process.exitCode = 0
|
||||
})
|
||||
|
||||
|
||||
@@ -1,12 +1,24 @@
|
||||
import { describe, test, expect, mock, afterAll } from "bun:test"
|
||||
import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test"
|
||||
import type {
|
||||
isActiveSessionStatus as isActiveSessionStatusFunction,
|
||||
isTerminalSessionStatus as isTerminalSessionStatusFunction,
|
||||
} from "./session-status-classifier"
|
||||
|
||||
const mockLog = mock()
|
||||
mock.module("../../shared/logger", () => ({ log: mockLog }))
|
||||
let isActiveSessionStatus: typeof isActiveSessionStatusFunction
|
||||
let isTerminalSessionStatus: typeof isTerminalSessionStatusFunction
|
||||
let importCounter = 0
|
||||
|
||||
afterAll(() => { mock.restore() })
|
||||
beforeEach(async () => {
|
||||
mockLog.mockClear()
|
||||
mock.module("../../shared/logger", () => ({ log: mockLog }))
|
||||
;({ isActiveSessionStatus, isTerminalSessionStatus } = await import(`./session-status-classifier?test=${importCounter}`))
|
||||
importCounter += 1
|
||||
})
|
||||
|
||||
const { isActiveSessionStatus, isTerminalSessionStatus } = await import("./session-status-classifier")
|
||||
mock.restore()
|
||||
afterEach(() => {
|
||||
mock.restore()
|
||||
})
|
||||
|
||||
describe("isActiveSessionStatus", () => {
|
||||
describe("#given a known active session status", () => {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// re-exports this logger) cannot leak a no-op `log` into our imports. See
|
||||
// script/run-ci-tests.ts — the `mock.module(` substring routes the file out of
|
||||
// the shared batch.
|
||||
import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test"
|
||||
import { afterAll, afterEach, beforeEach, describe, expect, mock, test } from "bun:test"
|
||||
mock.module("./logger-test-isolation", () => ({}))
|
||||
|
||||
import * as fs from "fs"
|
||||
@@ -16,6 +16,10 @@ type LoggerModule = typeof import("./logger")
|
||||
|
||||
const TEST_PREFIX = "oh-my-opencode-logger-test"
|
||||
|
||||
afterAll(() => {
|
||||
mock.restore()
|
||||
})
|
||||
|
||||
function makeTempDir(): string {
|
||||
return fs.mkdtempSync(path.join(os.tmpdir(), `${TEST_PREFIX}-`))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user