grunt-contrib-watch/test/tasks/nospawn_test.js
2016-06-14 21:42:02 -07:00

64 lines
2.1 KiB
JavaScript

'use strict';
var grunt = require('grunt');
var path = require('path');
var fs = require('fs');
var helper = require('./helper');
var fixtures = helper.fixtures;
var useFixtures = ['nospawn'];
function cleanUp() {
useFixtures.forEach(function(fixture) {
helper.cleanUp(fixture + '/node_modules');
});
}
exports.nospawn = {
setUp: function(done) {
cleanUp();
useFixtures.forEach(function(fixture) {
fs.symlinkSync(path.join(__dirname, '../../node_modules'), path.join(fixtures, fixture, 'node_modules'));
});
done();
},
tearDown: function(done) {
cleanUp();
done();
},
nospawn: function(test) {
test.expect(3);
var cwd = path.resolve(fixtures, 'nospawn');
var assertWatch = helper.assertTask(['server', 'watch'], {cwd: cwd});
assertWatch(function() {
var write = 'var nospawn = true;';
grunt.file.write(path.join(cwd, 'lib', 'nospawn.js'), write);
}, function(result) {
helper.verboseLog(result);
var count = result.match(new RegExp('Running "watch" task', 'g')).length;
test.equal(count, 2, 'Watch should have fired twice.');
test.ok(result.indexOf('Server is listening...') !== -1, 'server should have been started.');
test.ok(result.indexOf('Server is talking!') !== -1, 'server should have responded.');
test.done();
});
},
interrupt: function(test) {
test.expect(2);
var cwd = path.resolve(fixtures, 'nospawn');
var assertWatch = helper.assertTask('watch', {cwd: cwd});
assertWatch([function() {
var write = 'var interrupt = true;';
grunt.file.write(path.join(cwd, 'lib', 'interrupt.js'), write);
setTimeout(function() {
grunt.file.write(path.join(cwd, 'lib', 'interrupt.js'), write);
}, 1000);
}], function(result) {
helper.verboseLog(result);
var count = result.match(new RegExp('Running "long" task', 'g')).length;
test.equal(count, 4, 'long task should have been ran only 4 times.');
test.ok(result.indexOf('have been interrupted') !== -1, 'tasks should have been interrupted.');
test.done();
});
}
};