UNPKG

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