diff --git a/lib/cli.js b/lib/cli.js index f652af284..b7dd8f446 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -38,7 +38,16 @@ var processArgs = function (argv, options, fs, path) { } if (helper.isString(options.logLevel)) { - options.logLevel = constant['LOG_' + options.logLevel.toUpperCase()] || constant.LOG_DISABLE + var logConstant = constant['LOG_' + options.logLevel.toUpperCase()] + if (helper.isDefined(logConstant)) { + options.logLevel = logConstant + } else { + console.error('Log level must be one of disable, error, warn, info, or debug.') + process.exit(1) + } + } else if (helper.isDefined(options.logLevel)) { + console.error('Log level must be one of disable, error, warn, info, or debug.') + process.exit(1) } if (helper.isString(options.singleRun)) { diff --git a/test/unit/cli.spec.coffee b/test/unit/cli.spec.coffee index e84952487..dc4413f76 100644 --- a/test/unit/cli.spec.coffee +++ b/test/unit/cli.spec.coffee @@ -8,6 +8,8 @@ describe 'cli', -> constant = require '../../lib/constants' path = require 'path' mocks = require 'mocks' + loadFile = mocks.loadFile + mockery = m = e = null fsMock = mocks.fs.create cwd: @@ -26,9 +28,26 @@ describe 'cli', -> processArgs = (args, opts) -> argv = optimist.parse(args) - cli.processArgs argv, opts || {}, fsMock, pathMock - - beforeEach -> setCWD '/' + e.processArgs argv, opts || {}, fsMock, pathMock + + beforeEach -> + setCWD '/' + mockery = {} + mockery.process = exit: sinon.spy() + mockery.console = error: sinon.spy() + + # load file under test + m = loadFile __dirname + '/../../lib/cli.js', mockery, { + global: {}, + console: mockery.console, + process: mockery.process, + require: (path) -> + if path.indexOf('./') is 0 + require '../../lib/' + path + else + require path + } + e = m.exports describe 'processArgs', -> @@ -95,6 +114,12 @@ describe 'cli', -> options = processArgs ['--log-level', 'warn'] expect(options.logLevel).to.equal constant.LOG_WARN + options = processArgs ['--log-level', 'foo'] + expect(mockery.process.exit).to.have.been.calledWith 1 + + options = processArgs ['--log-level'] + expect(mockery.process.exit).to.have.been.calledWith 1 + it 'should parse browsers into an array', -> options = processArgs ['--browsers', 'Chrome,ChromeCanary,Firefox']