diff --git a/lib/validation.js b/lib/validation.js index e9bbb12bc..5cbe9643f 100644 --- a/lib/validation.js +++ b/lib/validation.js @@ -102,7 +102,7 @@ module.exports = function validation (yargs, usage, y18n) { } }) - if (commandKeys.length > 0) { + if ((currentContext.commands.length > 0) || (commandKeys.length > 0)) { argv._.slice(currentContext.commands.length).forEach((key) => { if (commandKeys.indexOf(key) === -1) { unknown.push(key) diff --git a/test/validation.js b/test/validation.js index f704816ce..bd0bd1d2f 100644 --- a/test/validation.js +++ b/test/validation.js @@ -335,6 +335,18 @@ describe('validation tests', () => { .parse() }) + it('fails in strict mode with extra positionals', (done) => { + yargs(['kangaroo', 'jumping', 'fast']) + .command('kangaroo ', 'kangaroo handlers') + .strict() + .fail((msg) => { + msg.should.equal('Unknown argument: fast') + return done() + }) + .parse() + expect.fail('no parsing failure') + }) + it('does not fail in strict mode when no commands configured', () => { const argv = yargs('koala') .demand(1)