UNPKG

1.42 kBJavaScriptView Raw
1'use strict';
2
3var gaze = require('../lib/gaze.js');
4var path = require('path');
5var fs = require('fs');
6
7// Node v0.6 compat
8fs.existsSync = fs.existsSync || path.existsSync;
9
10// Clean up helper to call in setUp and tearDown
11function cleanUp(done) {
12 [
13 'safewrite.js'
14 ].forEach(function(d) {
15 var p = path.resolve(__dirname, 'fixtures', d);
16 if (fs.existsSync(p)) { fs.unlinkSync(p); }
17 });
18 done();
19}
20
21exports.safewrite = {
22 setUp: function(done) {
23 process.chdir(path.resolve(__dirname, 'fixtures'));
24 cleanUp(done);
25 },
26 tearDown: cleanUp,
27 safewrite: function(test) {
28 test.expect(4);
29
30 var times = 0;
31 var file = path.resolve(__dirname, 'fixtures', 'safewrite.js');
32 var backup = path.resolve(__dirname, 'fixtures', 'safewrite.ext~');
33 fs.writeFileSync(file, 'var safe = true;');
34
35 function simSafewrite() {
36 fs.writeFileSync(backup, fs.readFileSync(file));
37 fs.unlinkSync(file);
38 fs.renameSync(backup, file);
39 times++;
40 }
41
42 gaze('**/*', function() {
43 this.on('all', function(action, filepath) {
44 test.equal(action, 'changed');
45 test.equal(path.basename(filepath), 'safewrite.js');
46
47 if (times < 2) {
48 setTimeout(simSafewrite, 1000);
49 } else {
50 this.close();
51 test.done();
52 }
53 });
54
55 setTimeout(function() {
56 simSafewrite();
57 }, 1000);
58
59 });
60 }
61};