parent
8aa3fcfb63
commit
ac28ac324d
|
@ -49,7 +49,7 @@ function watch(globs, opts, tasks) {
|
||||||
watcher.close = function() {
|
watcher.close = function() {
|
||||||
if (timeoutId !== null) clearTimeout(timeoutId);
|
if (timeoutId !== null) clearTimeout(timeoutId);
|
||||||
close();
|
close();
|
||||||
}
|
};
|
||||||
|
|
||||||
var eventsRecorded = 0; // Number of events recorded
|
var eventsRecorded = 0; // Number of events recorded
|
||||||
var timeoutId = null; // If non-null, event capture window is open
|
var timeoutId = null; // If non-null, event capture window is open
|
||||||
|
@ -75,13 +75,15 @@ function watch(globs, opts, tasks) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function tasksDone(err) {
|
function tasksDone(err) {
|
||||||
if (err) throw err;
|
|
||||||
if (eventsRecorded) {
|
if (eventsRecorded) {
|
||||||
// eventsRecorded has increased during the run, run again on the next turn
|
// eventsRecorded has increased during the run, run again on the next turn
|
||||||
timeoutId = setTimeout(invokeCallback, 0);
|
timeoutId = setTimeout(invokeCallback, 0);
|
||||||
} else {
|
} else {
|
||||||
timeoutId = null;
|
timeoutId = null;
|
||||||
}
|
}
|
||||||
|
if (!useRunSequence && err) {
|
||||||
|
console.log('Watch task error:', err.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,28 @@ describe('watch()', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('should continue to trigger callbacks if task throws', function() {
|
||||||
|
var calls = 0;
|
||||||
|
spyOn(console, 'log');
|
||||||
|
function cb(done) {
|
||||||
|
calls += 1;
|
||||||
|
if (calls === 1) throw new Error('oops!');
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
|
var watcher = watch('./$$fake_path/**/*', { delay: 10 }, cb);
|
||||||
|
|
||||||
|
watcher._emit('change', './$$fake_path/test1.txt');
|
||||||
|
timeout.flush();
|
||||||
|
expect(calls).toBe(1);
|
||||||
|
expect(console.log).toHaveBeenCalledWith('Watch task error:', 'Error: oops!');
|
||||||
|
|
||||||
|
watcher._emit('change', './$$fake_path/test2.txt');
|
||||||
|
timeout.flush();
|
||||||
|
expect(calls).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
it('should cancel pending callback if FSWatcher is closed', function() {
|
it('should cancel pending callback if FSWatcher is closed', function() {
|
||||||
var cb = jasmine.createSpy('callback');
|
var cb = jasmine.createSpy('callback');
|
||||||
var watcher = watch('./$$fake_path/**/*', { delay: 10 }, cb);
|
var watcher = watch('./$$fake_path/**/*', { delay: 10 }, cb);
|
||||||
|
|
Loading…
Reference in New Issue