mirror of
https://github.com/nodejs/node.git
synced 2025-05-13 10:54:13 +00:00

The test is sometimes timing out because of a race condition between the fs event generated on file creation and the event being registered in the kqueue. To avoid this problem, create the file after 100 ms, that is the value used in the `fs_event_watch_dir_recursive` libuv test. PR-URL: https://github.com/nodejs/node/pull/4629 Reviewed-By: Rich Trott <rtrott@gmail.com>
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
|
|
if (!(common.isOSX || common.isWindows)) {
|
|
common.skip('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';
|
|
|
|
common.refreshTmpDir();
|
|
|
|
const testsubdir = fs.mkdtempSync(testDir + path.sep);
|
|
const relativePathOne = path.join(path.basename(testsubdir), filenameOne);
|
|
const filepathOne = path.join(testsubdir, filenameOne);
|
|
|
|
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;
|
|
});
|
|
|
|
if (process.platform === 'darwin') {
|
|
setTimeout(function() {
|
|
fs.writeFileSync(filepathOne, 'world');
|
|
}, 100);
|
|
} else {
|
|
fs.writeFileSync(filepathOne, 'world');
|
|
}
|
|
|
|
process.on('exit', function() {
|
|
assert(watcherClosed, 'watcher Object was not closed');
|
|
});
|