diff --git a/index.js b/index.js index 6229f00d6..5f11e8f4e 100644 --- a/index.js +++ b/index.js @@ -626,7 +626,7 @@ Command.prototype.parseArgs = function(args, unknown) { if (this.listeners('command:' + name).length) { this.emit('command:' + args.shift(), args, unknown); } else { - this.emit('command:*', args); + this.emit('command:*', args, unknown); } } else { outputHelpIfNecessary(this, unknown); @@ -1127,4 +1127,3 @@ function exists(file) { return false; } } - diff --git a/test/test.arguments.js b/test/test.arguments.js index b4dfa6df6..fefa93ac6 100644 --- a/test/test.arguments.js +++ b/test/test.arguments.js @@ -11,6 +11,7 @@ var cmdValue = ""; program .version('0.0.1') .arguments(' [env]') + .allowUnknownOption() .action(function (cmd, env) { cmdValue = cmd; envValue = env; diff --git a/test/test.command.allowUnknownOption.js b/test/test.command.allowUnknownOption.js index 7261dd95a..11546b2d7 100644 --- a/test/test.command.allowUnknownOption.js +++ b/test/test.command.allowUnknownOption.js @@ -51,6 +51,20 @@ program.parse('node test sub2 -m'.split(' ')); stubError.callCount.should.equal(0); stubExit.calledOnce.should.be.false(); +// test unknown argument passed to listeners +resetStubStatus(); +program + .command('sub2') + .allowUnknownOption() + .action(function () { + }); +program.on("command:sub", function(args, unknown) { + unknown.should.equal(["-m"]); +}) +program.on("command:*", function(args, unknown) { + unknown.should.equal(["-m"]); +}) +program.parse('node test sub2 -m'.split(' ')); function resetStubStatus() { stubError.reset();