'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([ 'fail/node_modules', 'fail/lib/added.js' ]); } exports.fail = { setUp: function(done) { cleanUp(); fs.symlinkSync(path.join(__dirname, '../../node_modules'), path.join(fixtures, 'fail', 'node_modules')); done(); }, tearDown: function(done) { cleanUp(); done(); }, warn: function(test) { test.expect(1); var cwd = path.resolve(fixtures, 'fail'); var assertWatch = helper.assertTask('watch:warn', {cwd: cwd}); assertWatch([function() { grunt.file.write(path.join(cwd, 'lib/one.js'), 'var one = true;'); }, function() { grunt.file.write(path.join(cwd, 'lib/one.js'), 'var one = true;'); }], function(result) { helper.verboseLog(result); test.ok(result.match(/This task should warn/g).length === 2, 'grunt.warn should not stop the watch task.'); test.done(); }); }, fatal: function(test) { test.expect(1); var cwd = path.resolve(fixtures, 'fail'); var assertWatch = helper.assertTask('watch:fatal', {cwd: cwd}); assertWatch([function() { grunt.file.write(path.join(cwd, 'lib/one.js'), 'var one = true;'); }, function() { grunt.file.write(path.join(cwd, 'lib/one.js'), 'var one = true;'); }], function(result) { helper.verboseLog(result); test.ok(result.match(/This task should be fatal/g).length === 2, 'grunt.fatal should not stop the watch task.'); test.done(); }); }, };