Skip to content

Commit 05924ef

Browse files
DhruvDhruv
authored andcommitted
watchFile never fires when vfs uses a real dir
1 parent cf882a7 commit 05924ef

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

lib/internal/vfs/providers/real.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,9 @@ class RealFSProvider extends VirtualProvider {
543543
return fs.promises.watch(realPath, options);
544544
}
545545

546-
watchFile(vfsPath, options) {
546+
watchFile(vfsPath, options, listener) {
547547
const realPath = this.#resolvePath(vfsPath);
548-
return fs.watchFile(realPath, options, () => {});
548+
return fs.watchFile(realPath, options, listener);
549549
}
550550

551551
unwatchFile(vfsPath, listener) {

test/parallel/test-vfs-real-provider-watch.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,19 @@ assert.strictEqual(myVfs.provider.supportsWatch, true);
3838
myVfs.watchFile('/wf.txt', { persistent: false }, listener);
3939
myVfs.unwatchFile('/wf.txt', listener);
4040
}
41+
42+
// watchFile listener fires when the underlying file changes.
43+
// Refs: https://github.com/nodejs/node/issues/64536
44+
{
45+
const target = path.join(root, 'wf-change.txt');
46+
fs.writeFileSync(target, 'a');
47+
let size = 2;
48+
const rewrite = setInterval(() => {
49+
fs.writeFileSync(target, 'x'.repeat(size++));
50+
}, 100);
51+
myVfs.watchFile('/wf-change.txt', { interval: 50 }, common.mustCall((curr, prev) => {
52+
clearInterval(rewrite);
53+
myVfs.unwatchFile('/wf-change.txt');
54+
assert.notStrictEqual(curr.size, prev.size);
55+
}));
56+
}

0 commit comments

Comments
 (0)