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:
parent
ba07f39347
commit
be88cc7697
32
gulpfile.js
32
gulpfile.js
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue