test: make fs-watch-recursive less racy
authorFedor Indutny <fedor.indutny@gmail.com>
Thu, 21 Nov 2013 17:06:29 +0000 (21:06 +0400)
committerFedor Indutny <fedor.indutny@gmail.com>
Tue, 10 Dec 2013 18:08:41 +0000 (22:08 +0400)
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.

test/simple/test-fs-watch-recursive.js

index a5ebad6..e421ab0 100644 (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();