import { describe, expect, test } from "vitest"; import { extractShellCommandFromArgv, formatExecCommand, validateSystemRunCommandConsistency, } from "./system-run-command.js"; describe("system run command helpers", () => { test("formatExecCommand quotes args with spaces", () => { expect(formatExecCommand(["echo", "hi there"])).toBe('echo "hi there"'); }); test("extractShellCommandFromArgv extracts sh -lc command", () => { expect(extractShellCommandFromArgv(["/bin/sh", "-lc", "echo hi"])).toBe("echo hi"); }); test("extractShellCommandFromArgv extracts cmd.exe /c command", () => { expect(extractShellCommandFromArgv(["cmd.exe", "/d", "/s", "/c", "echo hi"])).toBe("echo hi"); }); test("validateSystemRunCommandConsistency accepts rawCommand matching direct argv", () => { const res = validateSystemRunCommandConsistency({ argv: ["echo", "hi"], rawCommand: "echo hi", }); expect(res.ok).toBe(true); if (!res.ok) { throw new Error("unreachable"); } expect(res.shellCommand).toBe(null); expect(res.cmdText).toBe("echo hi"); }); test("validateSystemRunCommandConsistency rejects mismatched rawCommand vs direct argv", () => { const res = validateSystemRunCommandConsistency({ argv: ["uname", "-a"], rawCommand: "echo hi", }); expect(res.ok).toBe(false); if (res.ok) { throw new Error("unreachable"); } expect(res.message).toContain("rawCommand does not match command"); expect(res.details?.code).toBe("RAW_COMMAND_MISMATCH"); }); test("validateSystemRunCommandConsistency accepts rawCommand matching sh wrapper argv", () => { const res = validateSystemRunCommandConsistency({ argv: ["/bin/sh", "-lc", "echo hi"], rawCommand: "echo hi", }); expect(res.ok).toBe(true); }); });