Catching gulp-mocha errors
gulp, javascript, mocha.js
Solution
You need to ignore 'error' and always emit 'end' to make 'gulp.watch' work.
function handleError(err) {
console.log(err.toString());
this.emit('end');
}
gulp.task("test", function() {
return gulp.src(paths.tests)
.pipe(mocha({ reporter: "spec" })
.on("error", handleError));
});
This makes 'gulp test' to always return '0' which is problematic for Continuous Integration, but I think we have no choice at this time.
Problem
I may be missing something extremely obvious but I can't get `gulp-mocha` to catch errors, causing my `gulp watch` task to end everytime I have a failing test. It's a very simple set up: ``` gulp.task("watch", ["build"], function () { gulp.watch([paths.scripts, paths.tests], ["test"]); }); gulp.task("test", function() { return gulp.src(paths.tests) .pipe(mocha({ reporter: "spec" }).on("error", gutil.log)); }); ``` Alternatively, putting the handler on the entire stream also gives the same problem: ``` gulp.task("test", function() { return gulp.src(paths.tests) .pipe(mocha({ reporter: "spec" })) .on("error", gutil.log); }); ``` I've also tried using `plumber`, `combine` and `gulp-batch` to no avail, so I guess I'm overlooking something trivial. Gist: http://gist.github.com/RoyJacobs/b518ebac117e95ff1457