From 10508f8245e7537bc0b0404981aae178dd828789 Mon Sep 17 00:00:00 2001 From: John Gee Date: Sat, 24 Jun 2023 19:13:33 +1200 Subject: [PATCH] Add test for interaction of opts.strict and opts.unknown --- test/strict.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/strict.js b/test/strict.js index 62b1c25..d026346 100644 --- a/test/strict.js +++ b/test/strict.js @@ -130,3 +130,25 @@ test('strict unknown option: opt.alias is known', function (t) { }); t.end(); }); + +test('strict unknown option: opts.unknown returns false', function (t) { + // Mirror non-strict and skip argument processing if opts.unknown returns false. + // Otherwise, throw for unknown option as usual. + + function unknownFn() { + } + function unknownFnTrue() { + return true; + } + function unknownFnFalse() { + return false; + } + + throwsWhenStrict(['--x=y'], { unknown: unknownFn }, { t: t, expected: kUnknownOption }); + throwsWhenStrict(['--x=y'], { unknown: unknownFnTrue }, { t: t, expected: kUnknownOption }); + t.doesNotThrow(function () { + parse(['--x=y'], { strict: true, unknown: unknownFnFalse }); + }); + + t.end(); +});