@@ -8,7 +8,8 @@ import * as fs from 'fs-extra';
8
8
import { convertStat , FileSystem , FileSystemUtils , RawFileSystem } from '../../../client/common/platform/fileSystem' ;
9
9
import { FileSystemPaths , FileSystemPathUtils } from '../../../client/common/platform/fs-paths' ;
10
10
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' ;
12
13
import {
13
14
assertDoesNotExist ,
14
15
assertFileText ,
@@ -267,13 +268,24 @@ suite('FileSystem - raw', () => {
267
268
}
268
269
} ) ;
269
270
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
+
270
283
test ( 'returns the correct WriteStream' , async ( ) => {
271
284
const filename = await fix . resolve ( 'x/y/z/spam.py' ) ;
272
285
const expected = fs . createWriteStream ( filename ) ;
273
286
expected . destroy ( ) ;
274
287
275
- const stream = fileSystem . createWriteStream ( filename ) ;
276
- stream . destroy ( ) ;
288
+ const stream = await writeToStream ( filename , noop ) ;
277
289
278
290
expect ( stream . path ) . to . deep . equal ( expected . path ) ;
279
291
} ) ;
@@ -283,9 +295,7 @@ suite('FileSystem - raw', () => {
283
295
await assertDoesNotExist ( filename ) ;
284
296
const data = 'line1\nline2\n' ;
285
297
286
- const stream = fileSystem . createWriteStream ( filename ) ;
287
- stream . write ( data ) ;
288
- stream . destroy ( ) ;
298
+ await writeToStream ( filename , s => s . write ( data ) ) ;
289
299
290
300
await assertFileText ( filename , data ) ;
291
301
} ) ;
@@ -294,9 +304,7 @@ suite('FileSystem - raw', () => {
294
304
const filename = await fix . resolve ( 'x/y/z/spam.py' ) ;
295
305
const data = '... 😁 ...' ;
296
306
297
- const stream = fileSystem . createWriteStream ( filename ) ;
298
- stream . write ( data ) ;
299
- stream . destroy ( ) ;
307
+ await writeToStream ( filename , s => s . write ( data ) ) ;
300
308
301
309
await assertFileText ( filename , data ) ;
302
310
} ) ;
@@ -305,9 +313,7 @@ suite('FileSystem - raw', () => {
305
313
const filename = await fix . createFile ( 'x/y/z/spam.py' , '...' ) ;
306
314
const data = 'line1\nline2\n' ;
307
315
308
- const stream = fileSystem . createWriteStream ( filename ) ;
309
- stream . write ( data ) ;
310
- stream . destroy ( ) ;
316
+ await writeToStream ( filename , s => s . write ( data ) ) ;
311
317
312
318
await assertFileText ( filename , data ) ;
313
319
} ) ;
0 commit comments