Skip to content

Commit 00952f7

Browse files
committed
update docs and tests
1 parent 0c2d047 commit 00952f7

File tree

4 files changed

+31
-16
lines changed

4 files changed

+31
-16
lines changed

doc/api/fs.md

+8-6
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,8 @@ changes:
760760
strings anymore.
761761
-->
762762
763-
* `data` {string|Buffer|TypedArray|DataView|ArrayBuffer|AsyncIterable|Iterable|Stream}
763+
* `data` {string|Buffer|TypedArray|DataView|ArrayBuffer|AsyncIterable|
764+
Iterable|Stream}
764765
* `options` {Object|string}
765766
* `encoding` {string|null} The expected character encoding when `data` is a
766767
string. **Default:** `'utf8'`
@@ -799,8 +800,8 @@ Write an array of {ArrayBufferView}s or {ArrayBuffer}s to the file.
799800
The promise is resolved with an object containing a two properties:
800801
801802
* `bytesWritten` {integer} the number of bytes written
802-
* `buffers` {Buffer\[]|TypedArray\[]|DataView\[]|ArrayBuffer\[]} a reference to the `buffers`
803-
input.
803+
* `buffers` {Buffer\[]|TypedArray\[]|DataView\[]|ArrayBuffer\[]} a reference
804+
to the `buffers` input.
804805
805806
It is unsafe to call `writev()` multiple times on the same file without waiting
806807
for the promise to be resolved (or rejected).
@@ -1693,7 +1694,8 @@ changes:
16931694
-->
16941695
16951696
* `file` {string|Buffer|URL|FileHandle} filename or `FileHandle`
1696-
* `data` {string|Buffer|TypedArray|DataView|ArrayBuffer|AsyncIterable|Iterable|Stream}
1697+
* `data` {string|Buffer|TypedArray|DataView|ArrayBuffer|AsyncIterable
1698+
|Iterable|Stream}
16971699
* `options` {Object|string}
16981700
* `encoding` {string|null} **Default:** `'utf8'`
16991701
* `mode` {integer} **Default:** `0o666`
@@ -4898,8 +4900,8 @@ changes:
48984900
* `bytesWritten` {integer}
48994901
* `buffers` {ArrayBufferView\[]}
49004902

4901-
Write an array of `ArrayBufferView`s or `ArrayBuffer`s to the file specified by `fd` using
4902-
`writev()`.
4903+
Write an array of `ArrayBufferView`s or `ArrayBuffer`s to the file specified
4904+
by `fd` using `writev()`.
49034905

49044906
`position` is the offset from the beginning of the file where this data
49054907
should be written. If `typeof position !== 'number'`, the data will be written

lib/internal/fs/utils.js

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const {
2121
StringPrototypeIncludes,
2222
Symbol,
2323
TypedArrayPrototypeIncludes,
24+
Uint8Array,
2425
} = primordials;
2526

2627
const { Buffer } = require('buffer');

test/parallel/test-fs-writev-sync.js

+21
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,27 @@ const getFileName = (i) => path.join(tmpdir.path, `writev_sync_${i}.txt`);
5656
assert(Buffer.concat(bufferArr).equals(fs.readFileSync(filename)));
5757
}
5858

59+
// fs.writevSync with array of ArrayBuffers without position
60+
{
61+
const filename = getFileName(2);
62+
const fd = fs.openSync(filename, 'w');
63+
64+
const buffer = Buffer.from(expected);
65+
const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
66+
const arrayBufferArr = [arrayBuffer, arrayBuffer, arrayBuffer];
67+
const expectedLength = arrayBufferArr.length * arrayBuffer.byteLength;
68+
69+
let written = fs.writevSync(fd, [Buffer.from('')]);
70+
assert.strictEqual(written, 0);
71+
72+
written = fs.writevSync(fd, arrayBufferArr);
73+
assert.strictEqual(written, expectedLength);
74+
75+
fs.closeSync(fd);
76+
const expectedResult = Buffer.concat(arrayBufferArr.map((buf) => new Uint8Array(buf)));
77+
assert(expectedResult.equals(fs.readFileSync(filename)));
78+
}
79+
5980
// fs.writevSync with empty array of buffers
6081
{
6182
const filename = getFileName(3);

test/parallel/test-fs-writev.js

+1-10
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,10 @@ const getFileName = (i) => path.join(tmpdir.path, `writev_${i}.txt`);
8888
assert.deepStrictEqual(arrayBufferArr, buffers);
8989

9090
const expectedLength = arrayBufferArr.length * arrayBuffer.byteLength;
91-
console.log({ arrLength: arrayBufferArr.length, byteLength: arrayBuffer.byteLength })
9291
assert.deepStrictEqual(written, expectedLength);
9392
fs.closeSync(fd);
9493
const expectedResult = Buffer.concat(arrayBufferArr.map((buf) => new Uint8Array(buf)));
95-
const gotResult = fs.readFileSync(filename);
96-
for (let i = 0; i < expectedResult.byteLength; i++) {
97-
if (expectedResult[i] !== gotResult[i]) {
98-
console.log({ i, expected: expectedResult[i], got: gotResult[i], expectedLength })
99-
break;
100-
}
101-
}
102-
// console.log({ expectedResult, _____gotResult, equal: expectedResult.compare(gotResult) });
103-
assert(expectedResult.equals(gotResult));
94+
assert(expectedResult.equals(fs.readFileSync(filename)));
10495
});
10596

10697
fs.writev(fd, arrayBufferArr, done);

0 commit comments

Comments
 (0)