Skip to content

Commit

Permalink
test: fix flaky sequential/test-fs-watch
Browse files Browse the repository at this point in the history
Fixes: #36247

PR-URL: #36249
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
  • Loading branch information
Trott committed Nov 27, 2020
1 parent 0a23d65 commit 8ba65b5
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions test/sequential/test-fs-watch.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,15 @@ const testDir = tmpdir.path;

tmpdir.refresh();

// Because macOS (and possibly other operating systems) can return a watcher
// before it is actually watching, we need to repeat the operation to avoid
// a race condition.
function repeat(fn) {
setImmediate(fn);
const interval = setInterval(fn, 5000);
return interval;
}

{
const filepath = path.join(testDir, 'watch.txt');

Expand All @@ -54,12 +63,11 @@ tmpdir.refresh();
if (expectFilePath) {
assert.strictEqual(filename, 'watch.txt');
}
clearInterval(interval);
watcher.close();
}));

setImmediate(function() {
fs.writeFileSync(filepath, 'world');
});
const interval = repeat(() => { fs.writeFileSync(filepath, 'world'); });
}

{
Expand All @@ -76,12 +84,11 @@ tmpdir.refresh();
if (expectFilePath) {
assert.strictEqual(filename, 'hasOwnProperty');
}
clearInterval(interval);
watcher.close();
}));

setImmediate(function() {
fs.writeFileSync(filepathAbs, 'pardner');
});
const interval = repeat(() => { fs.writeFileSync(filepathAbs, 'pardner'); });
}

{
Expand All @@ -97,14 +104,15 @@ tmpdir.refresh();
} else {
assert.strictEqual(filename, null);
}
clearInterval(interval);
watcher.close();
}));

setImmediate(function() {
const interval = repeat(() => {
fs.rmSync(filepath, { force: true });
const fd = fs.openSync(filepath, 'w');
fs.closeSync(fd);
});

}

// https://github.com/joyent/node/issues/2293 - non-persistent watcher should
Expand Down

0 comments on commit 8ba65b5

Please sign in to comment.