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