feat: select subagent runner from config
This commit is contained in:
70
src/runner.test.ts
Normal file
70
src/runner.test.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
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");
|
||||
});
|
||||
Reference in New Issue
Block a user