blob: afa5307e4d1ca5e2d06d50321e1fb669c1981b94 [file] [edit]
'use strict';
// This tests that closing a watcher when the underlying handle is
// already destroyed will result in a noop instead of a crash.
const common = require('../common');
// fs-watch on folders have limited capability in AIX.
// The testcase makes use of folder watching, and causes
// hang. This behavior is documented. Skip this for AIX.
if (common.isAIX)
common.skip('folder watch capability is limited in AIX.');
if (common.isIBMi)
common.skip('IBMi does not support `fs.watch()`');
const tmpdir = require('../common/tmpdir');
const fs = require('fs');
tmpdir.refresh();
const root = tmpdir.resolve('watched-directory');
fs.mkdirSync(root);
const watcher = fs.watch(root, { persistent: false, recursive: false });
// The following listeners may or may not be invoked.
watcher.addListener('error', () => {
setTimeout(
() => { watcher.close(); }, // Should not crash if it's invoked
common.platformTimeout(10)
);
});
watcher.addListener('change', () => {
setTimeout(
() => { watcher.close(); },
common.platformTimeout(10)
);
});
fs.rmdirSync(root);
// Wait for the listener to hit
setTimeout(
common.mustCall(),
common.platformTimeout(100)
);