mirror of
https://mirror.skon.top/github.com/code-yeongyu/oh-my-opencode
synced 2026-04-22 00:20:25 +08:00
fix(test): align zombie pane tmux mocks
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
/// <reference path="../../../bun-test.d.ts" />
|
||||
import { beforeEach, describe, expect, mock, test, afterAll } from "bun:test"
|
||||
import type { TmuxConfig } from "../../config/schema"
|
||||
import type { ActionResult, ExecuteContext, ExecuteActionsResult } from "./action-executor"
|
||||
@@ -25,6 +26,9 @@ const mockExecuteActions = mock<(
|
||||
results: [],
|
||||
}))
|
||||
|
||||
const mockSpawnTmuxWindow = mock(async () => ({ success: true, paneId: "%window" }))
|
||||
const mockSpawnTmuxSession = mock(async () => ({ success: true, paneId: "%session" }))
|
||||
|
||||
const mockIsInsideTmux = mock<() => boolean>(() => true)
|
||||
const mockGetCurrentPaneId = mock<() => string | undefined>(() => "%0")
|
||||
|
||||
@@ -44,6 +48,8 @@ mock.module("../../shared/tmux", () => ({
|
||||
SESSION_READY_POLL_INTERVAL_MS: 10,
|
||||
SESSION_READY_TIMEOUT_MS: 50,
|
||||
SESSION_MISSING_GRACE_MS: 1_000,
|
||||
spawnTmuxWindow: mockSpawnTmuxWindow,
|
||||
spawnTmuxSession: mockSpawnTmuxSession,
|
||||
}))
|
||||
|
||||
afterAll(() => { mock.restore() })
|
||||
@@ -56,6 +62,7 @@ const mockTmuxDeps: TmuxUtilDeps = {
|
||||
function createConfig(): TmuxConfig {
|
||||
return {
|
||||
enabled: true,
|
||||
isolation: "inline",
|
||||
layout: "main-vertical",
|
||||
main_pane_size: 60,
|
||||
main_pane_min_width: 80,
|
||||
@@ -156,6 +163,8 @@ describe("TmuxSessionManager zombie pane handling", () => {
|
||||
mockQueryWindowState.mockClear()
|
||||
mockExecuteAction.mockClear()
|
||||
mockExecuteActions.mockClear()
|
||||
mockSpawnTmuxWindow.mockClear()
|
||||
mockSpawnTmuxSession.mockClear()
|
||||
mockIsInsideTmux.mockClear()
|
||||
mockGetCurrentPaneId.mockClear()
|
||||
|
||||
@@ -171,6 +180,8 @@ describe("TmuxSessionManager zombie pane handling", () => {
|
||||
spawnedPaneId: "%1",
|
||||
results: [],
|
||||
}))
|
||||
mockSpawnTmuxWindow.mockImplementation(async () => ({ success: true, paneId: "%window" }))
|
||||
mockSpawnTmuxSession.mockImplementation(async () => ({ success: true, paneId: "%session" }))
|
||||
mockIsInsideTmux.mockReturnValue(true)
|
||||
mockGetCurrentPaneId.mockReturnValue("%0")
|
||||
})
|
||||
@@ -259,9 +270,15 @@ describe("TmuxSessionManager zombie pane handling", () => {
|
||||
"ses_pending",
|
||||
createTrackedSession({ closePending: true, closeRetryCount: 0 }),
|
||||
)
|
||||
mockExecuteAction.mockImplementationOnce(async () => {
|
||||
sessions.delete("ses_pending")
|
||||
return { success: false }
|
||||
let shouldFailClose = true
|
||||
mockExecuteAction.mockImplementation(async () => {
|
||||
if (shouldFailClose) {
|
||||
shouldFailClose = false
|
||||
sessions.delete("ses_pending")
|
||||
return { success: false }
|
||||
}
|
||||
|
||||
return { success: true }
|
||||
})
|
||||
|
||||
// when
|
||||
|
||||
Reference in New Issue
Block a user