diff --git a/src/cli/root-option-value.test.ts b/src/cli/root-option-value.test.ts new file mode 100644 index 00000000000..63c445f80b1 --- /dev/null +++ b/src/cli/root-option-value.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, it } from "vitest"; +import { takeCliRootOptionValue } from "./root-option-value.js"; + +describe("takeCliRootOptionValue", () => { + it("preserves equals signs after the first separator", () => { + expect(takeCliRootOptionValue("--token=abc=def", undefined)).toEqual({ + value: "abc=def", + consumedNext: false, + }); + expect(takeCliRootOptionValue("--token=abc==", undefined)).toEqual({ + value: "abc==", + consumedNext: false, + }); + }); + + it("treats empty inline values as missing", () => { + expect(takeCliRootOptionValue("--token=", "fallback")).toEqual({ + value: null, + consumedNext: false, + }); + }); + + it("continues to consume the next token for space-separated values", () => { + expect(takeCliRootOptionValue("--token", "abc=def")).toEqual({ + value: "abc=def", + consumedNext: true, + }); + }); +}); diff --git a/src/cli/root-option-value.ts b/src/cli/root-option-value.ts index b4adf8d0644..5db55cc5fbd 100644 --- a/src/cli/root-option-value.ts +++ b/src/cli/root-option-value.ts @@ -8,7 +8,7 @@ export function takeCliRootOptionValue( consumedNext: boolean; } { if (raw.includes("=")) { - const [, value] = raw.split("=", 2); + const value = raw.slice(raw.indexOf("=") + 1); const trimmed = (value ?? "").trim(); return { value: trimmed || null, consumedNext: false }; }