fix: reject partial numeric CLI options

This commit is contained in:
Peter Steinberger
2026-05-27 03:34:44 -04:00
parent f4e20f806e
commit d2d5010aec
13 changed files with 195 additions and 32 deletions

View File

@@ -186,4 +186,64 @@ describe("nodes-cli coverage", () => {
});
expect(invoke.params?.timeoutMs).toBe(6000);
});
it.each([
{
args: ["nodes", "location", "get", "--node", "mac-1", "--max-age", "1000ms"],
flag: "--max-age",
},
{
args: ["nodes", "location", "get", "--node", "mac-1", "--location-timeout", "5s"],
flag: "--location-timeout",
},
{
args: ["nodes", "location", "get", "--node", "mac-1", "--invoke-timeout", "6s"],
flag: "--invoke-timeout",
},
{
args: ["nodes", "camera", "snap", "--node", "mac-1", "--max-width", "1024px"],
flag: "--max-width",
},
{
args: ["nodes", "camera", "snap", "--node", "mac-1", "--delay-ms", "20ms"],
flag: "--delay-ms",
},
{
args: ["nodes", "camera", "snap", "--node", "mac-1", "--invoke-timeout", "20s"],
flag: "--invoke-timeout",
},
{
args: ["nodes", "camera", "clip", "--node", "mac-1", "--invoke-timeout", "90s"],
flag: "--invoke-timeout",
},
{
args: ["nodes", "screen", "record", "--node", "mac-1", "--screen", "1x"],
flag: "--screen",
},
{
args: ["nodes", "screen", "record", "--node", "mac-1", "--invoke-timeout", "120s"],
flag: "--invoke-timeout",
},
{
args: ["nodes", "notify", "--node", "mac-1", "--title", "Ping", "--invoke-timeout", "15s"],
flag: "--invoke-timeout",
},
{
args: [
"nodes",
"invoke",
"--node",
"mac-1",
"--command",
"canvas.eval",
"--invoke-timeout",
"15s",
],
flag: "--invoke-timeout",
},
])("rejects partial numeric option for $args", async ({ args, flag }) => {
await expect(sharedProgram.parseAsync(args, { from: "user" })).rejects.toThrow("__exit__:1");
expect(runtimeErrors.at(-1)).toContain(`${flag} must be`);
expect(lastNodeInvokeCall).toBeNull();
});
});