Files
openclaw/src/agents/bash-tools.exec.pty-fallback.test.ts
2026-04-08 00:09:07 +01:00

40 lines
1.1 KiB
TypeScript

import { afterEach, beforeAll, expect, test, vi } from "vitest";
let createExecTool: typeof import("./bash-tools.exec.js").createExecTool;
let resetProcessRegistryForTests: typeof import("./bash-process-registry.js").resetProcessRegistryForTests;
vi.mock("@lydell/node-pty", () => ({
spawn: () => {
const err = new Error("spawn EBADF");
(err as NodeJS.ErrnoException).code = "EBADF";
throw err;
},
}));
beforeAll(async () => {
({ createExecTool } = await import("./bash-tools.exec.js"));
({ resetProcessRegistryForTests } = await import("./bash-process-registry.js"));
});
afterEach(() => {
resetProcessRegistryForTests();
vi.clearAllMocks();
});
test("exec falls back when PTY spawn fails", async () => {
const tool = createExecTool({
allowBackground: false,
host: "gateway",
security: "full",
ask: "off",
});
const result = await tool.execute("toolcall", {
command: "printf ok",
pty: true,
});
expect(result.details.status).toBe("completed");
const text = result.content?.find((item) => item.type === "text")?.text ?? "";
expect(text).toContain("ok");
expect(text).toContain("PTY spawn failed");
});