'use strict'; const common = require('../common'); const tmpdir = require('../common/tmpdir'); const fs = require('fs'); if (common.isSunOS) common.skip('SunOS behaves differently'); if (common.isIBMi) common.skip('IBMi does not support `fs.watch()`'); tmpdir.refresh(); fs.mkdirSync(tmpdir.resolve('./parent/child'), { recursive: true }); fs.writeFileSync(tmpdir.resolve('./parent/child/test.tmp'), 'test'); const toWatch = tmpdir.resolve('./parent'); const onFileUpdate = common.mustCallAtLeast((eventType, filename) => { // We are only checking for the filename to avoid having Windows, Linux and Mac specific assertions if (fs.readdirSync(tmpdir.resolve('./parent')).length === 0) { watcher.close(); } }, 1); const watcher = fs.watch(toWatch, { recursive: true }, onFileUpdate); // We must wait a bit `fs.rm()` to let the watcher be set up properly setTimeout(() => { fs.rm(tmpdir.resolve('./parent/child'), { recursive: true }, common.mustCall()); }, common.platformTimeout(500));