Skip to content

Commit 9b91d96

Browse files
committed
test: fix flaky test-fs-watch-ignore
1 parent 96c2b7b commit 9b91d96

File tree

1 file changed

+46
-19
lines changed

1 file changed

+46
-19
lines changed

test/parallel/test-fs-watch-ignore.js

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,25 +31,31 @@ tmpdir.refresh();
3131

3232
let seenFile = false;
3333
let seenIgnored = false;
34+
let interval;
35+
3436
watcher.on('change', common.mustCallAtLeast((event, filename) => {
3537
if (filename === 'file.txt') {
3638
seenFile = true;
3739
}
3840
if (filename === 'file.log') {
3941
seenIgnored = true;
4042
}
41-
// Close watcher after we've seen the non-ignored file
4243
if (seenFile) {
44+
clearInterval(interval);
45+
interval = null;
4346
watcher.close();
4447
}
4548
}, 1));
4649

47-
setTimeout(() => {
48-
fs.writeFileSync(ignoredFile, 'ignored');
49-
fs.writeFileSync(testFile, 'content');
50-
}, common.platformTimeout(200));
50+
process.nextTick(common.mustCall(() => {
51+
interval = setInterval(() => {
52+
fs.writeFileSync(ignoredFile, 'ignored');
53+
fs.writeFileSync(testFile, 'content-' + Date.now());
54+
}, 100);
55+
}));
5156

5257
process.on('exit', () => {
58+
assert.strictEqual(interval, null);
5359
assert.strictEqual(seenFile, true);
5460
assert.strictEqual(seenIgnored, false);
5561
});
@@ -70,6 +76,8 @@ tmpdir.refresh();
7076

7177
let seenFile = false;
7278
let seenIgnored = false;
79+
let interval;
80+
7381
watcher.on('change', common.mustCallAtLeast((event, filename) => {
7482
if (filename === 'keep.txt') {
7583
seenFile = true;
@@ -78,16 +86,21 @@ tmpdir.refresh();
7886
seenIgnored = true;
7987
}
8088
if (seenFile) {
89+
clearInterval(interval);
90+
interval = null;
8191
watcher.close();
8292
}
8393
}, 1));
8494

85-
setTimeout(() => {
86-
fs.writeFileSync(ignoredFile, 'ignored');
87-
fs.writeFileSync(testFile, 'content');
88-
}, common.platformTimeout(200));
95+
process.nextTick(common.mustCall(() => {
96+
interval = setInterval(() => {
97+
fs.writeFileSync(ignoredFile, 'ignored');
98+
fs.writeFileSync(testFile, 'content-' + Date.now());
99+
}, 100);
100+
}));
89101

90102
process.on('exit', () => {
103+
assert.strictEqual(interval, null);
91104
assert.strictEqual(seenFile, true);
92105
assert.strictEqual(seenIgnored, false);
93106
});
@@ -108,6 +121,8 @@ tmpdir.refresh();
108121

109122
let seenFile = false;
110123
let seenIgnored = false;
124+
let interval;
125+
111126
watcher.on('change', common.mustCallAtLeast((event, filename) => {
112127
if (filename === 'visible.txt') {
113128
seenFile = true;
@@ -116,16 +131,21 @@ tmpdir.refresh();
116131
seenIgnored = true;
117132
}
118133
if (seenFile) {
134+
clearInterval(interval);
135+
interval = null;
119136
watcher.close();
120137
}
121138
}, 1));
122139

123-
setTimeout(() => {
124-
fs.writeFileSync(ignoredFile, 'ignored');
125-
fs.writeFileSync(testFile, 'content');
126-
}, common.platformTimeout(200));
140+
process.nextTick(common.mustCall(() => {
141+
interval = setInterval(() => {
142+
fs.writeFileSync(ignoredFile, 'ignored');
143+
fs.writeFileSync(testFile, 'content-' + Date.now());
144+
}, 100);
145+
}));
127146

128147
process.on('exit', () => {
148+
assert.strictEqual(interval, null);
129149
assert.strictEqual(seenFile, true);
130150
assert.strictEqual(seenIgnored, false);
131151
});
@@ -154,6 +174,8 @@ tmpdir.refresh();
154174
let seenLog = false;
155175
let seenTmp = false;
156176
let seenHidden = false;
177+
let interval;
178+
157179
watcher.on('change', common.mustCallAtLeast((event, filename) => {
158180
if (filename === 'keep.txt') {
159181
seenFile = true;
@@ -163,18 +185,23 @@ tmpdir.refresh();
163185
if (filename === '.secret') seenHidden = true;
164186

165187
if (seenFile) {
188+
clearInterval(interval);
189+
interval = null;
166190
watcher.close();
167191
}
168192
}, 1));
169193

170-
setTimeout(() => {
171-
fs.writeFileSync(ignoredLog, 'ignored');
172-
fs.writeFileSync(ignoredTmp, 'ignored');
173-
fs.writeFileSync(ignoredHidden, 'ignored');
174-
fs.writeFileSync(testFile, 'content');
175-
}, common.platformTimeout(200));
194+
process.nextTick(common.mustCall(() => {
195+
interval = setInterval(() => {
196+
fs.writeFileSync(ignoredLog, 'ignored');
197+
fs.writeFileSync(ignoredTmp, 'ignored');
198+
fs.writeFileSync(ignoredHidden, 'ignored');
199+
fs.writeFileSync(testFile, 'content-' + Date.now());
200+
}, 100);
201+
}));
176202

177203
process.on('exit', () => {
204+
assert.strictEqual(interval, null);
178205
assert.strictEqual(seenFile, true);
179206
assert.strictEqual(seenLog, false);
180207
assert.strictEqual(seenTmp, false);

0 commit comments

Comments
 (0)