spawn-mocha-parallel
Version:
Spawn mocha child processes in parallel.
93 lines (70 loc) • 2.54 kB
Markdown
# spawn-mocha-parallel
This let you run your test in parallel by spawning several child processes.
It was designed to be used with [gulp][gulp], but since it relies only
on npm, it may be used within various configuration.
[](https://npmjs.org/package/spawn-mocha-parallel)
[](https://npmjs.org/package/spawn-mocha-parallel)
[](https://david-dm.org/sebv/spawn-mocha-parallel)
[](https://david-dm.org/sebv/spawn-mocha-parallel#info=devDependencies)
## Credits
This was originaly a fork of [gulp-spawn-mocha] but has deviated a lot since
then.
## Usage
Using built in mochaStream:
```js
var mochaStream = require('spawn-mocha-parallel').mochaStream;
var mocha = mochaStream({concurrency: 10});
gulp.task('test-mocha', function() {
gulp.src('**/*-specs.js', {read: false})
.pipe(mocha)
.on('error', console.error)
});
```
Using SpawnMocha
```js
var SpawnMocha = require('spawn-mocha-parallel').SpawnMocha,
_ = require('lodash');
through = require('through');
// customize output as you need
function mochaStream(opts) {
opts = opts || {};
var spawnMocha = new SpawnMocha(opts);
var stream = through(function write(file) {
spawnMocha.add(file.path);
}, function() {});
var errors = [];
spawnMocha.on('error', function(err) {
console.error(err.toString());
errors.push(err);
}).on('end', function() {
if(errors.length > 0) {
console.error('ERROR SUMMARY: ');
_(errors).each(function(err) {
console.error(err);
console.error(err.stack);
});
stream.emit('error', "Some tests failed.");
}
stream.emit('end');
});
return stream;
}
var mocha = mochaStream({concurrency: 3});
gulp.task('test-custom-mocha', function() {
gulp.src('**/*-specs.js', {read: false})
.pipe(mocha)
.on('error', console.error)
});
```
## Options
- concurrency: # of mocha instance running in parallel (default: 1)
- env mocha running env, (default: process.env)
- flags: mocha flags (default: none)
- liveOutput: print output direct to console
- errorSummary: show error summary (default: true)
## Todo
- concatenate mocha status at the end
## License
MIT
[gulp]: http://gulpjs.com/ "gulp.js"
[mocha]: http://visionmedia.github.io/mocha/ "Mocha"