Skip to content

Commit ca776ab

Browse files
authored
Fix flakey file system tests (#10541)
1 parent d57ce9f commit ca776ab

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

src/test/common/platform/filesystem.functional.test.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import * as fs from 'fs-extra';
88
import { convertStat, FileSystem, FileSystemUtils, RawFileSystem } from '../../../client/common/platform/fileSystem';
99
import { FileSystemPaths, FileSystemPathUtils } from '../../../client/common/platform/fs-paths';
1010
import { FileType } from '../../../client/common/platform/types';
11-
import { sleep } from '../../../client/common/utils/async';
11+
import { createDeferred, sleep } from '../../../client/common/utils/async';
12+
import { noop } from '../../../client/common/utils/misc';
1213
import {
1314
assertDoesNotExist,
1415
assertFileText,
@@ -267,13 +268,24 @@ suite('FileSystem - raw', () => {
267268
}
268269
});
269270

271+
async function writeToStream(filename: string, write: (str: fs.WriteStream) => void) {
272+
const closeDeferred = createDeferred();
273+
const stream = fileSystem.createWriteStream(filename);
274+
stream.on('close', () => closeDeferred.resolve());
275+
write(stream);
276+
stream.end();
277+
stream.close();
278+
stream.destroy();
279+
await closeDeferred.promise;
280+
return stream;
281+
}
282+
270283
test('returns the correct WriteStream', async () => {
271284
const filename = await fix.resolve('x/y/z/spam.py');
272285
const expected = fs.createWriteStream(filename);
273286
expected.destroy();
274287

275-
const stream = fileSystem.createWriteStream(filename);
276-
stream.destroy();
288+
const stream = await writeToStream(filename, noop);
277289

278290
expect(stream.path).to.deep.equal(expected.path);
279291
});
@@ -283,9 +295,7 @@ suite('FileSystem - raw', () => {
283295
await assertDoesNotExist(filename);
284296
const data = 'line1\nline2\n';
285297

286-
const stream = fileSystem.createWriteStream(filename);
287-
stream.write(data);
288-
stream.destroy();
298+
await writeToStream(filename, s => s.write(data));
289299

290300
await assertFileText(filename, data);
291301
});
@@ -294,9 +304,7 @@ suite('FileSystem - raw', () => {
294304
const filename = await fix.resolve('x/y/z/spam.py');
295305
const data = '... 😁 ...';
296306

297-
const stream = fileSystem.createWriteStream(filename);
298-
stream.write(data);
299-
stream.destroy();
307+
await writeToStream(filename, s => s.write(data));
300308

301309
await assertFileText(filename, data);
302310
});
@@ -305,9 +313,7 @@ suite('FileSystem - raw', () => {
305313
const filename = await fix.createFile('x/y/z/spam.py', '...');
306314
const data = 'line1\nline2\n';
307315

308-
const stream = fileSystem.createWriteStream(filename);
309-
stream.write(data);
310-
stream.destroy();
316+
await writeToStream(filename, s => s.write(data));
311317

312318
await assertFileText(filename, data);
313319
});

0 commit comments

Comments
 (0)