From 24d0df7052a276ef9db1d8ea014f1af4555521fa Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Fri, 27 Aug 2021 10:27:47 +0200 Subject: [PATCH] fixup! fs: add docs and tests for `AsyncIterable` support in `fh.writeFile` --- .../test-fs-promises-file-handle-writeFile.js | 126 +++++++++++------- test/parallel/test-fs-promises-writefile.js | 7 +- 2 files changed, 81 insertions(+), 52 deletions(-) diff --git a/test/parallel/test-fs-promises-file-handle-writeFile.js b/test/parallel/test-fs-promises-file-handle-writeFile.js index 1c35db3e2e31bf..2c1a80e4f52d49 100644 --- a/test/parallel/test-fs-promises-file-handle-writeFile.js +++ b/test/parallel/test-fs-promises-file-handle-writeFile.js @@ -18,13 +18,15 @@ tmpdir.refresh(); async function validateWriteFile() { const filePathForHandle = path.resolve(tmpDir, 'tmp-write-file2.txt'); const fileHandle = await open(filePathForHandle, 'w+'); - const buffer = Buffer.from('Hello world'.repeat(100), 'utf8'); - - await fileHandle.writeFile(buffer); - const readFileData = fs.readFileSync(filePathForHandle); - assert.deepStrictEqual(buffer, readFileData); + try { + const buffer = Buffer.from('Hello world'.repeat(100), 'utf8'); - await fileHandle.close(); + await fileHandle.writeFile(buffer); + const readFileData = fs.readFileSync(filePathForHandle); + assert.deepStrictEqual(buffer, readFileData); + } finally { + await fileHandle.close(); + } } // Signal aborted while writing file @@ -82,11 +84,14 @@ const asyncIterable = { async function doWriteStream() { const fileHandle = await open(dest, 'w+'); - await fileHandle.writeFile(stream); - const expected = 'abc'; - const data = fs.readFileSync(dest, 'utf-8'); - assert.deepStrictEqual(data, expected); - await fileHandle.close(); + try { + await fileHandle.writeFile(stream); + const expected = 'abc'; + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, expected); + } finally { + await fileHandle.close(); + } } async function doWriteStreamWithCancel() { @@ -94,68 +99,91 @@ async function doWriteStreamWithCancel() { const { signal } = controller; process.nextTick(() => controller.abort()); const fileHandle = await open(otherDest, 'w+'); - await assert.rejects( - fileHandle.writeFile(stream, { signal }), - { name: 'AbortError' } - ); - await fileHandle.close(); + try { + await assert.rejects( + fileHandle.writeFile(stream, { signal }), + { name: 'AbortError' } + ); + } finally { + await fileHandle.close(); + } } async function doWriteIterable() { const fileHandle = await open(dest, 'w+'); - await fileHandle.writeFile(iterable); - const data = fs.readFileSync(dest, 'utf-8'); - assert.deepStrictEqual(data, iterable.expected); - await fileHandle.close(); + try { + await fileHandle.writeFile(iterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, iterable.expected); + } finally { + await fileHandle.close(); + } } async function doWriteInvalidIterable() { const fileHandle = await open(dest, 'w+'); - await Promise.all( - [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => - assert.rejects(fileHandle.writeFile(iterableWith(value)), { - code: 'ERR_INVALID_ARG_TYPE', - }) - ) - ); - await fileHandle.close(); + try { + await Promise.all( + [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => + assert.rejects( + fileHandle.writeFile(iterableWith(value)), + { code: 'ERR_INVALID_ARG_TYPE' } + ) + ) + ); + } finally { + await fileHandle.close(); + } } async function doWriteIterableWithEncoding() { const fileHandle = await open(dest, 'w+'); - await fileHandle.writeFile(stream2, 'latin1'); - const expected = 'ümlaut sechzig'; - const data = fs.readFileSync(dest, 'latin1'); - assert.deepStrictEqual(data, expected); - await fileHandle.close(); + try { + await fileHandle.writeFile(stream2, 'latin1'); + const expected = 'ümlaut sechzig'; + const data = fs.readFileSync(dest, 'latin1'); + assert.deepStrictEqual(data, expected); + } finally { + await fileHandle.close(); + } } async function doWriteBufferIterable() { const fileHandle = await open(dest, 'w+'); - await fileHandle.writeFile(bufferIterable); - const data = fs.readFileSync(dest, 'utf-8'); - assert.deepStrictEqual(data, bufferIterable.expected); - await fileHandle.close(); + try { + await fileHandle.writeFile(bufferIterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, bufferIterable.expected); + } finally { + await fileHandle.close(); + } } async function doWriteAsyncIterable() { const fileHandle = await open(dest, 'w+'); - await fileHandle.writeFile(asyncIterable); - const data = fs.readFileSync(dest, 'utf-8'); - assert.deepStrictEqual(data, asyncIterable.expected); - await fileHandle.close(); + try { + await fileHandle.writeFile(asyncIterable); + const data = fs.readFileSync(dest, 'utf-8'); + assert.deepStrictEqual(data, asyncIterable.expected); + } finally { + await fileHandle.close(); + } } async function doWriteInvalidValues() { const fileHandle = await open(dest, 'w+'); - await Promise.all( - [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => - assert.rejects(fileHandle.writeFile(value), { - code: 'ERR_INVALID_ARG_TYPE', - }) - ) - ); - await fileHandle.close(); + try { + await Promise.all( + [42, 42n, {}, Symbol('42'), true, undefined, null, NaN].map((value) => + assert.rejects( + fileHandle.writeFile(value), + { code: 'ERR_INVALID_ARG_TYPE' } + ) + ) + ); + } finally { + await fileHandle.close(); + } } (async () => { diff --git a/test/parallel/test-fs-promises-writefile.js b/test/parallel/test-fs-promises-writefile.js index cf2482b2c5e4bb..25df61b2b48414 100644 --- a/test/parallel/test-fs-promises-writefile.js +++ b/test/parallel/test-fs-promises-writefile.js @@ -135,9 +135,10 @@ async function doWriteWithCancel() { const controller = new AbortController(); const { signal } = controller; process.nextTick(() => controller.abort()); - assert.rejects(fsPromises.writeFile(otherDest, buffer, { signal }), { - name: 'AbortError' - }); + await assert.rejects( + fsPromises.writeFile(otherDest, buffer, { signal }), + { name: 'AbortError' } + ); } async function doAppend() {