blob: 9200f11aff7ba9adf0d0f39077dfc3256dea67ac [file] [log] [blame]
'use strict';
var gaze = require('../lib/gaze.js');
var path = require('path');
var fs = require('fs');
// Node v0.6 compat
fs.existsSync = fs.existsSync || path.existsSync;
// Clean up helper to call in setUp and tearDown
function cleanUp(done) {
[
'safewrite.js'
].forEach(function(d) {
var p = path.resolve(__dirname, 'fixtures', d);
if (fs.existsSync(p)) { fs.unlinkSync(p); }
});
done();
}
exports.safewrite = {
setUp: function(done) {
process.chdir(path.resolve(__dirname, 'fixtures'));
cleanUp(done);
},
tearDown: cleanUp,
safewrite: function(test) {
test.expect(4);
var times = 0;
var file = path.resolve(__dirname, 'fixtures', 'safewrite.js');
var backup = path.resolve(__dirname, 'fixtures', 'safewrite.ext~');
fs.writeFileSync(file, 'var safe = true;');
function simSafewrite() {
fs.writeFileSync(backup, fs.readFileSync(file));
fs.unlinkSync(file);
fs.renameSync(backup, file);
times++;
}
gaze('**/*', function() {
this.on('all', function(action, filepath) {
test.equal(action, 'changed');
test.equal(path.basename(filepath), 'safewrite.js');
if (times < 2) {
setTimeout(simSafewrite, 1000);
} else {
this.close();
test.done();
}
});
setTimeout(function() {
simSafewrite();
}, 1000);
});
}
};