test: make fs-watch-recursive less racy

FSEventStream may emit events that happened right before it has started.
Ignore changes emitted for the directory itself, since they may come
from the stale events.
This commit is contained in:
Fedor Indutny
2013-11-21 21:06:29 +04:00
parent 259d449622
commit 78cd4533d9

View File

@@ -30,7 +30,8 @@ if (process.platform === 'darwin') {
var testDir = common.tmpDir;
var filenameOne = 'watch.txt';
var testsubdir = path.join(testDir, 'testsubdir');
var testsubdirName = 'testsubdir';
var testsubdir = path.join(testDir, testsubdirName);
var relativePathOne = path.join('testsubdir', filenameOne);
var filepathOne = path.join(testsubdir, filenameOne);
@@ -44,12 +45,16 @@ if (process.platform === 'darwin') {
};
try { fs.mkdirSync(testsubdir, 0700); } catch (e) {}
fs.writeFileSync(filepathOne, 'hello');
assert.doesNotThrow(function() {
var watcher = fs.watch(testDir, {recursive: true});
watcher.on('change', function(event, filename) {
assert.ok('change' === event || 'rename' === event);
// Ignore stale events generated by mkdir
if (filename === testsubdirName)
return;
assert.equal(relativePathOne, filename);
watcher.close();