1 | 'use strict';
|
2 |
|
3 | var gaze = require('../lib/gaze.js');
|
4 | var path = require('path');
|
5 | var fs = require('fs');
|
6 |
|
7 |
|
8 | function 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 |
|
18 | exports.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 | };
|