diff --git a/bin/_mocha b/bin/_mocha index 86c67e2942..37d6d566f2 100755 --- a/bin/_mocha +++ b/bin/_mocha @@ -64,6 +64,7 @@ program .option('-A, --async-only', "force all tests to take a callback (async)") .option('-C, --no-colors', 'force disabling of colors') .option('-G, --growl', 'enable growl notification support') + .option('-O, --reporter-options ', 'reporter-specific options') .option('-R, --reporter ', 'specify the reporter to use', 'spec') .option('-S, --sort', "sort test files") .option('-b, --bail', "bail after first test failure") @@ -190,9 +191,22 @@ program.parse(process.argv); Error.stackTraceLimit = Infinity; // TODO: config +// reporter options + +var reporterOptions = {}; +if (program.reporterOptions !== undefined) { + program.reporterOptions.split(",").forEach(function(opt) { + var L = opt.split("="); + if (L.length != 2) { + throw new Error("invalid reporter option '" + opt + "'"); + } + reporterOptions[L[0]] = L[1]; + }); +} + // reporter -mocha.reporter(program.reporter); +mocha.reporter(program.reporter, reporterOptions); // interface diff --git a/lib/mocha.js b/lib/mocha.js index 69e273f9b7..a224112b4d 100644 --- a/lib/mocha.js +++ b/lib/mocha.js @@ -69,7 +69,7 @@ function Mocha(options) { this.suite = new exports.Suite('', new exports.Context); this.ui(options.ui); this.bail(options.bail); - this.reporter(options.reporter); + this.reporter(options.reporter, options.reporterOptions); if (null != options.timeout) this.timeout(options.timeout); this.useColors(options.useColors) if (options.slow) this.slow(options.slow); @@ -119,10 +119,10 @@ Mocha.prototype.addFile = function(file){ * Set reporter to `reporter`, defaults to "spec". * * @param {String|Function} reporter name or constructor + * @param {Object} reporterOptions optional options * @api public */ - -Mocha.prototype.reporter = function(reporter){ +Mocha.prototype.reporter = function(reporter, reporterOptions){ if ('function' == typeof reporter) { this._reporter = reporter; } else { @@ -137,6 +137,7 @@ Mocha.prototype.reporter = function(reporter){ if (!_reporter) throw new Error('invalid reporter "' + reporter + '"'); this._reporter = _reporter; } + this.options.reporterOptions = reporterOptions; return this; };