Files
pi-subagents/src/runner.test.ts

71 lines
2.0 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import { createConfiguredRunSingleTask } from "./runner.ts";
function makeResult(finalText: string) {
return {
runId: "run-1",
agent: "scout",
agentSource: "builtin" as const,
task: "inspect auth",
exitCode: 0,
finalText,
};
}
test("createConfiguredRunSingleTask uses process runner when config says process", async () => {
const calls: string[] = [];
const runSingleTask = createConfiguredRunSingleTask({
loadConfig: () => ({ runner: "process" }),
processRunner: async () => {
calls.push("process");
return makeResult("process");
},
tmuxRunner: async () => {
calls.push("tmux");
return makeResult("tmux");
},
});
const result = await runSingleTask({ cwd: "/repo", meta: { task: "inspect auth" } as any });
assert.equal(result.finalText, "process");
assert.deepEqual(calls, ["process"]);
});
test("createConfiguredRunSingleTask uses tmux runner when config says tmux", async () => {
const calls: string[] = [];
const runSingleTask = createConfiguredRunSingleTask({
loadConfig: () => ({ runner: "tmux" }),
processRunner: async () => {
calls.push("process");
return makeResult("process");
},
tmuxRunner: async () => {
calls.push("tmux");
return makeResult("tmux");
},
});
const result = await runSingleTask({ cwd: "/repo", meta: { task: "inspect auth" } as any });
assert.equal(result.finalText, "tmux");
assert.deepEqual(calls, ["tmux"]);
});
test("createConfiguredRunSingleTask passes task cwd into config loader", async () => {
let cwdSeen = "";
const runSingleTask = createConfiguredRunSingleTask({
loadConfig: (cwd) => {
cwdSeen = cwd;
return { runner: "process" };
},
processRunner: async () => makeResult("process"),
tmuxRunner: async () => makeResult("tmux"),
});
await runSingleTask({ cwd: "/repo/worktree", meta: { task: "inspect auth" } as any });
assert.equal(cwdSeen, "/repo/worktree");
});