diff --git a/test/parallel/test-fs-watch-recursive.js b/test/parallel/test-fs-watch-recursive.js new file mode 100644 index 00000000000000..9c68b5e3557242 --- /dev/null +++ b/test/parallel/test-fs-watch-recursive.js @@ -0,0 +1,43 @@ +'use strict'; + +const common = require('../common'); + +if (!(process.platform === 'darwin' || common.isWindows)) { + console.log('1..0 # Skipped: recursive option is darwin/windows specific'); + return; +} + +const assert = require('assert'); +const path = require('path'); +const fs = require('fs'); + +const testDir = common.tmpDir; +const filenameOne = 'watch.txt'; +const testsubdirName = 'testsubdir'; +const testsubdir = path.join(testDir, testsubdirName); +const relativePathOne = path.join('testsubdir', filenameOne); +const filepathOne = path.join(testsubdir, filenameOne); + +common.refreshTmpDir(); + +fs.mkdirSync(testsubdir, 0o700); + +const watcher = fs.watch(testDir, {recursive: true}); + +var watcherClosed = false; +watcher.on('change', function(event, filename) { + assert.ok('change' === event || 'rename' === event); + + // Ignore stale events generated by mkdir and other tests + if (filename !== relativePathOne) + return; + + watcher.close(); + watcherClosed = true; +}); + +fs.writeFileSync(filepathOne, 'world'); + +process.on('exit', function() { + assert(watcherClosed, 'watcher Object was not closed'); +}); diff --git a/test/sequential/test-fs-watch-recursive.js b/test/sequential/test-fs-watch-recursive.js deleted file mode 100644 index 3e6e4b44f4ed24..00000000000000 --- a/test/sequential/test-fs-watch-recursive.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; -var common = require('../common'); -var assert = require('assert'); -var path = require('path'); -var fs = require('fs'); - -if (process.platform === 'darwin' || common.isWindows) { - var watchSeenOne = 0; - - var testDir = common.tmpDir; - - var filenameOne = 'watch.txt'; - var testsubdirName = 'testsubdir'; - var testsubdir = path.join(testDir, testsubdirName); - var relativePathOne = path.join('testsubdir', filenameOne); - var filepathOne = path.join(testsubdir, filenameOne); - - common.refreshTmpDir(); - - process.on('exit', function() { - assert.ok(watchSeenOne > 0); - }); - - function cleanup() { - try { fs.unlinkSync(filepathOne); } catch (e) { } - try { fs.rmdirSync(testsubdir); } catch (e) { } - }; - - try { fs.mkdirSync(testsubdir, 0o700); } catch (e) {} - - 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 and other tests - if (filename !== relativePathOne) - return; - - watcher.close(); - cleanup(); - ++watchSeenOne; - }); - }); - - setTimeout(function() { - fs.writeFileSync(filepathOne, 'world'); - }, 10); -} else { - console.log('1..0 # Skipped: recursive option is darwin/windows specific'); -}