Fix --idle-timeout-seconds validation being skipped (#8009)

The lower bound check ran before the parser had resolved the value, so it
only saw a value with the --idle-timeout-seconds=<value> form. With the
space-separated form the value was still undefined at that point,
Number(undefined) is NaN, and NaN <= 60 is false, so anything got through.

Move the check below the block that pulls the value from the next
argument so both forms are validated the same way.
This commit is contained in:
Leo Camus
2026-09-20 12:53:04 +02:00
committed by GitHub
parent cd0f21dc72
commit 8a7bf87a4d
3 changed files with 19 additions and 4 deletions

View File

@@ -268,6 +268,16 @@ describe("parser", () => {
expect(() => parse(["--log", "invalid"])).toThrowError(/--log valid values: \[trace, debug, info, warn, error\]/)
})
it("should error if idle-timeout-seconds is too low", () => {
expect(() => parse(["--idle-timeout-seconds=60"])).toThrowError(
/--idle-timeout-seconds must be greater than 60 seconds/,
)
expect(() => parse(["--idle-timeout-seconds", "60"])).toThrowError(
/--idle-timeout-seconds must be greater than 60 seconds/,
)
expect(parse(["--idle-timeout-seconds", "61"])).toEqual({ "idle-timeout-seconds": 61 })
})
it("should error if the option doesn't exist", () => {
expect(() => parse(["--foo"])).toThrowError(/Unknown option --foo/)
})