151 lines
5.5 KiB
JavaScript
151 lines
5.5 KiB
JavaScript
|
var should = require("should");
|
||
|
var path = require("path");
|
||
|
var fs = require("fs");
|
||
|
|
||
|
var NodeWatchFileSystem = require("../lib/node/NodeWatchFileSystem");
|
||
|
|
||
|
var fixtures = path.join(__dirname, "fixtures");
|
||
|
var fileDirect = path.join(fixtures, "watched-file.txt");
|
||
|
var fileSubdir = path.join(fixtures, "subdir", "watched-file.txt");
|
||
|
|
||
|
function simpleObject(key, value) {
|
||
|
var obj = {};
|
||
|
obj[key] = value;
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
describe("NodeWatchFileSystem", function() {
|
||
|
this.timeout(5000);
|
||
|
it("should register a file change (change delayed)", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
new NodeWatchFileSystem().watch([fileDirect], [], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([fileDirect]);
|
||
|
dirsModified.should.be.eql([]);
|
||
|
fileTimestamps.should.have.property(fileDirect).be.a("number");
|
||
|
dirTimestamps.should.be.eql({});
|
||
|
done();
|
||
|
});
|
||
|
|
||
|
setTimeout(function() {
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
}, 500);
|
||
|
});
|
||
|
it("should register a file change (watch delayed)", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
setTimeout(function() {
|
||
|
new NodeWatchFileSystem().watch([fileDirect], [], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([fileDirect]);
|
||
|
dirsModified.should.be.eql([]);
|
||
|
fileTimestamps.should.have.property(fileDirect).be.a("number");
|
||
|
dirTimestamps.should.be.eql({});
|
||
|
done();
|
||
|
});
|
||
|
}, 500);
|
||
|
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
});
|
||
|
it("should register a context change (change delayed)", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
new NodeWatchFileSystem().watch([], [fixtures], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([]);
|
||
|
dirsModified.should.be.eql([fixtures]);
|
||
|
fileTimestamps.should.be.eql({});
|
||
|
dirTimestamps.should.have.property(fixtures).be.a("number");
|
||
|
done();
|
||
|
});
|
||
|
|
||
|
setTimeout(function() {
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
}, 500);
|
||
|
});
|
||
|
it("should register a context change (watch delayed)", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
setTimeout(function() {
|
||
|
new NodeWatchFileSystem().watch([], [fixtures], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([]);
|
||
|
dirsModified.should.be.eql([fixtures]);
|
||
|
fileTimestamps.should.be.eql({});
|
||
|
dirTimestamps.should.have.property(fixtures).be.a("number");
|
||
|
done();
|
||
|
});
|
||
|
}, 500);
|
||
|
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
});
|
||
|
it("should register a context change (change delayed, subdirectory)", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
new NodeWatchFileSystem().watch([], [fixtures], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([]);
|
||
|
dirsModified.should.be.eql([fixtures]);
|
||
|
fileTimestamps.should.be.eql({});
|
||
|
dirTimestamps.should.have.property(fixtures).be.a("number");
|
||
|
done();
|
||
|
});
|
||
|
|
||
|
setTimeout(function() {
|
||
|
fs.writeFile(fileSubdir, "", function() {});
|
||
|
}, 500);
|
||
|
});
|
||
|
it("should register a context change (watch delayed, subdirectory)", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
setTimeout(function() {
|
||
|
new NodeWatchFileSystem().watch([], [fixtures], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([]);
|
||
|
dirsModified.should.be.eql([fixtures]);
|
||
|
fileTimestamps.should.be.eql({});
|
||
|
dirTimestamps.should.have.property(fixtures).be.a("number");
|
||
|
done();
|
||
|
});
|
||
|
}, 500);
|
||
|
|
||
|
fs.writeFile(fileSubdir, "", function() {});
|
||
|
});
|
||
|
it("should allow to combine all", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
setTimeout(function() {
|
||
|
new NodeWatchFileSystem().watch([fileDirect, fileSubdir], [fixtures], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([fileSubdir, fileDirect]);
|
||
|
dirsModified.should.be.eql([fixtures]);
|
||
|
fileTimestamps.should.have.property(fileDirect).be.a("number");
|
||
|
fileTimestamps.should.have.property(fileSubdir).be.a("number");
|
||
|
dirTimestamps.should.have.property(fixtures).be.a("number");
|
||
|
done();
|
||
|
});
|
||
|
}, 500);
|
||
|
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
fs.writeFile(fileSubdir, "", function() {});
|
||
|
});
|
||
|
it("should sum up multiple changes", function(done) {
|
||
|
var startTime = new Date().getTime();
|
||
|
new NodeWatchFileSystem().watch([fileDirect, fileSubdir], [fixtures], startTime, 1000, function(err, filesModified, dirsModified, fileTimestamps, dirTimestamps) {
|
||
|
if(err) throw err;
|
||
|
filesModified.should.be.eql([fileSubdir, fileDirect]);
|
||
|
dirsModified.should.be.eql([fixtures]);
|
||
|
fileTimestamps.should.have.property(fileDirect).be.a("number");
|
||
|
fileTimestamps.should.have.property(fileSubdir).be.a("number");
|
||
|
dirTimestamps.should.have.property(fixtures).be.a("number");
|
||
|
done();
|
||
|
});
|
||
|
|
||
|
setTimeout(function() {
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
setTimeout(function() {
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
setTimeout(function() {
|
||
|
fs.writeFile(fileDirect, "", function() {});
|
||
|
setTimeout(function() {
|
||
|
fs.writeFile(fileSubdir, "", function() {});
|
||
|
}, 500);
|
||
|
}, 500);
|
||
|
}, 500);
|
||
|
}, 500);
|
||
|
});
|
||
|
});
|