--- /dev/null
+'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');
+});
+++ /dev/null
-'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');
-}