diff --git a/test/options.test.js b/test/options.test.js index cd73993..027a9ae 100644 --- a/test/options.test.js +++ b/test/options.test.js @@ -35,3 +35,32 @@ test("rejects unknown cache types and unsafe depth values", () => { assert.throws(() => parseOptions(["--type", "unknown"]), /Unknown cache type/); assert.throws(() => parseOptions(["--max-depth", "0"]), /between 1 and 100/); }); + +test("parses help and version flags without changing the default root", () => { + const helpOptions = parseOptions(["--help"], "/workspace"); + const versionOptions = parseOptions(["--version"], "/workspace"); + + assert.equal(helpOptions.root, path.resolve("/workspace")); + assert.equal(helpOptions.help, true); + assert.equal(helpOptions.version, false); + assert.equal(versionOptions.root, path.resolve("/workspace")); + assert.equal(versionOptions.help, false); + assert.equal(versionOptions.version, true); +}); + +test("rejects options with missing values", () => { + assert.throws(() => parseOptions(["--format"]), /--format requires a value/); + assert.throws( + () => parseOptions(["--min-size", "--apply"]), + /--min-size requires a value/, + ); +}); + +test("rejects invalid output formats and extra positional arguments", () => { + assert.throws(() => parseOptions(["--format", "xml"]), /Unsupported format/); + assert.throws(() => parseOptions(["--verbose"]), /Unknown option: --verbose/); + assert.throws( + () => parseOptions(["workspace", "other"]), + /Unexpected argument: other/, + ); +});