diff --git a/bin/nyc.js b/bin/nyc.js index cd225844d..7c188e40a 100755 --- a/bin/nyc.js +++ b/bin/nyc.js @@ -85,5 +85,6 @@ if ([ }) } else { // I don't have a clue what you're doing. + process.exitCode = 1 yargs.showHelp() } diff --git a/test/nyc-integration.js b/test/nyc-integration.js index 91bd358ca..903f78d47 100644 --- a/test/nyc-integration.js +++ b/test/nyc-integration.js @@ -12,7 +12,7 @@ const glob = require('glob') const isWindows = require('is-windows')() const rimraf = require('rimraf') const makeDir = require('make-dir') -const spawn = require('child_process').spawn +const { spawn, spawnSync } = require('child_process') const si = require('strip-indent') require('chai').should() @@ -1079,6 +1079,23 @@ describe('the nyc cli', function () { }) }) + it('help shows to stderr when main command doesn\'t know what to do', () => { + const opts = { + cwd: fixturesCLI, + env, + encoding: 'utf8' + } + + const help = spawnSync(process.execPath, [bin, '--help'], opts) + const unknown = spawnSync(process.execPath, [bin], opts) + help.status.should.equal(0) + unknown.status.should.equal(1) + help.stderr.should.equal('') + unknown.stdout.should.equal('') + help.stdout.should.not.equal('') + help.stdout.should.equal(unknown.stderr) + }) + describe('args', function () { it('does not interpret args intended for instrumented bin', function (done) { var args = [bin, '--silent', process.execPath, 'args.js', '--help', '--version']