chore(build): watch logger should honor ignoreInitial option

It was confusing because the test.unit.dart task does ignore the initial, and
the logger was hardcoded to always ignore the first task, leading to the appearance
that a run was happening twice for no reason.

Also, fixed the "fake ignoreInitial" handling to not rely on a fake event, which
is not necessary.

Closes #2101
This commit is contained in:
Caitlin Potter 2015-06-02 13:07:36 -05:00
parent ba07f39347
commit be88cc7697
3 changed files with 33 additions and 36 deletions

View File

@ -335,10 +335,7 @@ function createDocsTasks(publicBuild) {
gulp.task(taskPrefix, [taskPrefix + '/assets', taskPrefix + '/app', taskPrefix + '/dgeni']); gulp.task(taskPrefix, [taskPrefix + '/assets', taskPrefix + '/app', taskPrefix + '/dgeni']);
gulp.task(taskPrefix + '/watch', function() { gulp.task(taskPrefix + '/watch', function() {
return watch('docs/app/**/*', { return watch('docs/app/**/*', [taskPrefix + '/app']);
ignoreInitial: false,
log: watchLog
}, [taskPrefix + '/app']);
}); });
gulp.task(taskPrefix + '/test', function (done) { gulp.task(taskPrefix + '/test', function (done) {
@ -439,7 +436,7 @@ gulp.task('test.unit.dart', function (done) {
return; return;
} }
watch('modules/angular2/**', { ignoreInitial: true, log: watchLog }, [ watch('modules/angular2/**', { ignoreInitial: true }, [
'!build/tree.dart', '!build/tree.dart',
'!test.unit.dart/karma-run' '!test.unit.dart/karma-run'
]); ]);
@ -488,7 +485,7 @@ gulp.task('test.unit.cjs', ['build/clean.js', 'build.tools'], function (neverDon
'test.unit.cjs/ci' 'test.unit.cjs/ci'
]; ];
watch('modules/**', { ignoreInitial: false, log: watchLog }, buildAndTest); watch('modules/**', buildAndTest);
}); });
@ -506,10 +503,7 @@ gulp.task('test.unit.tools', ['build/clean.tools'], function(done) {
'test.unit.tools/ci' 'test.unit.tools/ci'
]; ];
watch(['tools/**', '!tools/**/test-fixtures/**'], { watch(['tools/**', '!tools/**/test-fixtures/**'], buildAndTest);
ignoreInitial: false,
log: watchLog
}, buildAndTest);
}); });
@ -895,21 +889,3 @@ process.on('beforeExit', function() {
beforeExitRan = true; beforeExitRan = true;
gulp.start('cleanup.builder'); gulp.start('cleanup.builder');
}); });
function watchLog(triggerCount) {
// Ignore initial event
if (!--triggerCount) return;
process.stdout.write([
'',
'==================================================',
' WATCH TRIGGERED BY FILE CHANGE #' + triggerCount,
' On: ' + prettyTime(),
'==================================================\n',
].join('\n'));
function prettyTime() {
var now = new Date();
return now.toLocaleDateString() + " at " + now.toLocaleTimeString();
}
}

View File

@ -12,8 +12,6 @@ function watch(globs, opts, tasks) {
var useRunSequence = typeof tasks !== 'function'; var useRunSequence = typeof tasks !== 'function';
var runTasks; var runTasks;
var log = typeof opts.log === 'function' ? opts.log : function noop() {};
if (useRunSequence) { if (useRunSequence) {
if (!Array.isArray(tasks)) tasks = [tasks]; if (!Array.isArray(tasks)) tasks = [tasks];
tasks = tasks.slice(); tasks = tasks.slice();
@ -50,6 +48,28 @@ function watch(globs, opts, tasks) {
throw err; throw err;
}); });
var log = function watchLogger(triggerCount) {
// Don't report change for initial event
if (!ignoreInitial && !--triggerCount) return;
process.stdout.write([
'',
'==================================================',
' WATCH TRIGGERED BY FILE CHANGE #' + triggerCount,
' On: ' + prettyTime(),
'==================================================\n',
].join('\n'));
function prettyTime() {
var now = new Date();
return now.toLocaleDateString() + " at " + now.toLocaleTimeString();
}
}
if (opts.log !== undefined && !opts.log) {
log = function noopLog(triggerCount) {}
}
var close = watcher.close.bind(watcher); var close = watcher.close.bind(watcher);
watcher.close = function() { watcher.close = function() {
if (timeoutId !== null) clearTimeout(timeoutId); if (timeoutId !== null) clearTimeout(timeoutId);
@ -60,7 +80,8 @@ function watch(globs, opts, tasks) {
var timeoutId = null; // If non-null, event capture window is open var timeoutId = null; // If non-null, event capture window is open
if (!ignoreInitial) { if (!ignoreInitial) {
handleEvent('change', 'madeupFilePath'); // synthetic event to kick off the first task run // synthetic event to kick off the first task run
timeoutId = setTimeout(invokeCallback, delay);
} }
return watcher; return watcher;

View File

@ -27,7 +27,7 @@ describe('watch()', function() {
it('should fire callback once for events which occur within `delay` window', function() { it('should fire callback once for events which occur within `delay` window', function() {
var cb = jasmine.createSpy('callback'); var cb = jasmine.createSpy('callback');
watcher = watch('./$$fake_path/**/*', { delay: 10 }, cb); watcher = watch('./$$fake_path/**/*', { delay: 10, log: false }, cb);
watcher._emit('add', './$$fake_path/test.txt'); watcher._emit('add', './$$fake_path/test.txt');
timeout.flush(9); timeout.flush(9);
@ -61,7 +61,7 @@ describe('watch()', function() {
expect(timeout.pending).toBe(1); expect(timeout.pending).toBe(1);
} }
var watcher = watch('./$$fake_path/**/*', { delay: 10 }, cb); var watcher = watch('./$$fake_path/**/*', { delay: 10, log: false }, cb);
watcher._emit('change', './$$fake_path/test1.txt'); watcher._emit('change', './$$fake_path/test1.txt');
expect(timeout.pending).toBe(1); expect(timeout.pending).toBe(1);
@ -81,7 +81,7 @@ describe('watch()', function() {
done(); done();
} }
var watcher = watch('./$$fake_path/**/*', { delay: 10 }, cb); var watcher = watch('./$$fake_path/**/*', { delay: 10, log: false }, cb);
watcher._emit('change', './$$fake_path/test1.txt'); watcher._emit('change', './$$fake_path/test1.txt');
timeout.flush(); timeout.flush();
@ -96,7 +96,7 @@ describe('watch()', function() {
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, log: false }, cb);
watcher._emit('change', './$$fake_path/test1.txt'); watcher._emit('change', './$$fake_path/test1.txt');
expect(timeout.pending).toBe(1); expect(timeout.pending).toBe(1);
@ -119,7 +119,7 @@ describe('watch()', function() {
expect(timeout.pending).toBe(0); expect(timeout.pending).toBe(0);
} }
var watcher = watch('./$$fake_path/**/*', { delay: 10 }, cb); var watcher = watch('./$$fake_path/**/*', { delay: 10, log: false }, cb);
watcher._emit('change', './$$fake_path/test1.txt'); watcher._emit('change', './$$fake_path/test1.txt');
timeout.flush(10); timeout.flush(10);