Files
Moltbot/src/daemon/cmd-argv.test.ts
2026-02-19 16:22:28 +01:00

43 lines
1.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { parseCmdScriptCommandLine, quoteCmdScriptArg } from "./cmd-argv.js";
describe("cmd argv helpers", () => {
it.each([
"plain",
"with space",
"safe&whoami",
"safe|whoami",
"safe<in",
"safe>out",
"safe^caret",
"%TEMP%",
"!token!",
'he said "hi"',
])("round-trips single arg: %p", (arg) => {
const encoded = quoteCmdScriptArg(arg);
expect(parseCmdScriptCommandLine(encoded)).toEqual([arg]);
});
it("round-trips mixed command lines", () => {
const args = [
"node",
"gateway.js",
"--display-name",
"safe&whoami",
"--percent",
"%TEMP%",
"--bang",
"!token!",
"--quoted",
'he said "hi"',
];
const encoded = args.map(quoteCmdScriptArg).join(" ");
expect(parseCmdScriptCommandLine(encoded)).toEqual(args);
});
it("rejects CR/LF in command arguments", () => {
expect(() => quoteCmdScriptArg("bad\narg")).toThrow(/Command argument cannot contain CR or LF/);
expect(() => quoteCmdScriptArg("bad\rarg")).toThrow(/Command argument cannot contain CR or LF/);
});
});