Skip to content

Commit 4b5f471

Browse files
committed
test: deflake test-watch-file-shared-dependency
Delay dependency file modification on macOS. Refs: #51842
1 parent 48c75bc commit 4b5f471

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

test/parallel/test-watch-file-shared-dependency.mjs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ if (common.isIBMi)
1212
if (common.isAIX)
1313
common.skip('folder watch capability is limited in AIX.');
1414

15-
tmpdir.refresh();
16-
1715
const { FilesWatcher } = watcher;
1816

1917
tmpdir.refresh();
@@ -32,15 +30,17 @@ Object.entries(fixtureContent)
3230
.forEach(([file, content]) => writeFileSync(fixturePaths[file], content));
3331

3432
describe('watch file with shared dependency', () => {
35-
it('should not remove shared dependencies when unfiltering an owner', () => {
33+
it('should not remove shared dependencies when unfiltering an owner', (t, done) => {
3634
const controller = new AbortController();
37-
const watcher = new FilesWatcher({ signal: controller.signal, debounce: 200 });
35+
const watcher = new FilesWatcher({ signal: controller.signal });
3836

3937
watcher.on('changed', ({ owners }) => {
40-
assert.strictEqual(owners.size, 2);
38+
if (owners.size !== 2) return;
39+
4140
assert.ok(owners.has(fixturePaths['test.js']));
4241
assert.ok(owners.has(fixturePaths['test-2.js']));
4342
controller.abort();
43+
done();
4444
});
4545
watcher.filterFile(fixturePaths['test.js']);
4646
watcher.filterFile(fixturePaths['test-2.js']);
@@ -49,6 +49,20 @@ describe('watch file with shared dependency', () => {
4949
watcher.unfilterFilesOwnedBy([fixturePaths['test.js']]);
5050
watcher.filterFile(fixturePaths['test.js']);
5151
watcher.filterFile(fixturePaths['dependency.js'], fixturePaths['test.js']);
52-
writeFileSync(fixturePaths['dependency.js'], 'module.exports = { modified: true };');
52+
53+
if (common.isMacOS) {
54+
// Do the write with a delay to ensure that the OS is ready to notify us.
55+
setTimeout(() => {
56+
writeFileSync(
57+
fixturePaths['dependency.js'],
58+
'module.exports = { modified: true };'
59+
);
60+
}, common.platformTimeout(200));
61+
} else {
62+
writeFileSync(
63+
fixturePaths['dependency.js'],
64+
'module.exports = { modified: true };'
65+
);
66+
}
5367
});
5468
});

0 commit comments

Comments
 (0)