Files
dev/third_party/pi/packages/coding-agent/test/initial-message.test.ts
alexion 4def357d09 chore(vendor): import pi 0.85.1
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
2026-09-14 10:48:47 -04:00

49 lines
1.4 KiB
TypeScript

import { describe, expect, test } from "vitest";
import type { Args } from "../src/cli/args.ts";
import { buildInitialMessage } from "../src/cli/initial-message.ts";
function createArgs(messages: string[] = []): Args {
return {
messages: [...messages],
fileArgs: [],
unknownFlags: new Map(),
diagnostics: [],
};
}
describe("buildInitialMessage", () => {
test("merges piped stdin with the first CLI message into one prompt", () => {
const parsed = createArgs(["Summarize the text given"]);
const result = buildInitialMessage({
parsed,
stdinContent: "README contents\n",
});
expect(result.initialMessage).toBe("README contents\nSummarize the text given");
expect(parsed.messages).toEqual([]);
});
test("uses stdin as the initial prompt when no CLI message is present", () => {
const parsed = createArgs();
const result = buildInitialMessage({
parsed,
stdinContent: "README contents",
});
expect(result.initialMessage).toBe("README contents");
expect(parsed.messages).toEqual([]);
});
test("combines stdin, file text, and first CLI message in one prompt", () => {
const parsed = createArgs(["Explain it", "Second message"]);
const result = buildInitialMessage({
parsed,
stdinContent: "stdin\n",
fileText: "file\n",
});
expect(result.initialMessage).toBe("stdin\nfile\nExplain it");
expect(parsed.messages).toEqual(["Second message"]);
});
});