Skip to content

Commit

Permalink
test: deflake test-watch-file-shared-dependency
Browse files Browse the repository at this point in the history
Delay dependency file modification on macOS.

Refs: #51842
PR-URL: #56344
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Jake Yuesong Li <[email protected]>
  • Loading branch information
lpinca authored Dec 25, 2024
1 parent 3147ec2 commit d00710d
Showing 1 changed file with 21 additions and 6 deletions.
27 changes: 21 additions & 6 deletions test/parallel/test-watch-file-shared-dependency.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ if (common.isIBMi)
if (common.isAIX)
common.skip('folder watch capability is limited in AIX.');

tmpdir.refresh();

const { FilesWatcher } = watcher;

tmpdir.refresh();
Expand All @@ -32,15 +30,18 @@ Object.entries(fixtureContent)
.forEach(([file, content]) => writeFileSync(fixturePaths[file], content));

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

watcher.on('changed', ({ owners }) => {
assert.strictEqual(owners.size, 2);
if (owners.size !== 2) return;

// If this code is never reached the test times out.
assert.ok(owners.has(fixturePaths['test.js']));
assert.ok(owners.has(fixturePaths['test-2.js']));
controller.abort();
done();
});
watcher.filterFile(fixturePaths['test.js']);
watcher.filterFile(fixturePaths['test-2.js']);
Expand All @@ -49,6 +50,20 @@ describe('watch file with shared dependency', () => {
watcher.unfilterFilesOwnedBy([fixturePaths['test.js']]);
watcher.filterFile(fixturePaths['test.js']);
watcher.filterFile(fixturePaths['dependency.js'], fixturePaths['test.js']);
writeFileSync(fixturePaths['dependency.js'], 'module.exports = { modified: true };');

if (common.isMacOS) {
// Do the write with a delay to ensure that the OS is ready to notify us.
setTimeout(() => {
writeFileSync(
fixturePaths['dependency.js'],
'module.exports = { modified: true };'
);
}, common.platformTimeout(200));
} else {
writeFileSync(
fixturePaths['dependency.js'],
'module.exports = { modified: true };'
);
}
});
});

0 comments on commit d00710d

Please sign in to comment.