56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
var grunt = require('grunt');
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
var helper = require('./helper');
|
|
|
|
var fixtures = helper.fixtures;
|
|
|
|
function cleanUp() {
|
|
helper.cleanUp([
|
|
'multiTargets/node_modules',
|
|
'multiTargets/Gruntfile.js.bak',
|
|
]);
|
|
}
|
|
|
|
var backupGrunfile;
|
|
|
|
exports.reloadgruntfile = {
|
|
setUp: function(done) {
|
|
cleanUp();
|
|
fs.symlinkSync(path.join(__dirname, '../../node_modules'), path.join(fixtures, 'multiTargets', 'node_modules'));
|
|
backupGrunfile = grunt.file.read(path.join(fixtures, 'multiTargets', 'Gruntfile.js'));
|
|
grunt.file.write(path.join(fixtures, 'multiTargets', 'Gruntfile.js.bak'), backupGrunfile);
|
|
done();
|
|
},
|
|
tearDown: function(done) {
|
|
grunt.file.write(path.join(fixtures, 'multiTargets', 'Gruntfile.js'), backupGrunfile);
|
|
cleanUp();
|
|
done();
|
|
},
|
|
reloadgruntfile: function(test) {
|
|
test.expect(3);
|
|
var cwd = path.resolve(fixtures, 'multiTargets');
|
|
var assertWatch = helper.assertTask('watch', {cwd:cwd});
|
|
assertWatch([function() {
|
|
// First edit a file and trigger the watch
|
|
grunt.file.write(path.join(cwd, 'lib', 'one.js'), 'var one = true;');
|
|
}, function() {
|
|
// Edit and reload the gruntfile
|
|
var gruntfile = String(backupGrunfile).replace('echo:one', 'echo:two');
|
|
grunt.file.write(path.join(cwd, 'Gruntfile.js'), gruntfile);
|
|
}, function() {
|
|
// Now editing one.js should trigger echo:two instead
|
|
grunt.file.write(path.join(cwd, 'lib', 'one.js'), 'var one = true;');
|
|
}], 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('one has changed') !== -1, 'task one should have been triggered.');
|
|
test.ok(result.indexOf('two has changed') !== -1, 'task two should have been triggered.');
|
|
test.done();
|
|
});
|
|
},
|
|
};
|