Skip to content

Commit 062b9a0

Browse files
committed
test: refine mutable Web Stream adapter coverage
Remove overlapping override coverage. Verify object-mode writes settle independently of native callbacks. Exercise the Writable.toWeb(Duplex) path and keep native HTTP validation coverage. Assisted-by: Codex Signed-off-by: seungwoo <zoozoo1302@gmail.com>
1 parent 13bebd8 commit 062b9a0

1 file changed

Lines changed: 21 additions & 39 deletions

File tree

‎test/parallel/test-webstreams-adapters-writable-buffer-sources.js‎

Lines changed: 21 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -119,39 +119,6 @@ suite('underlying Writable', () => {
119119
assert.deepStrictEqual(consumed, Buffer.from([1, 2, 3, 4]));
120120
});
121121

122-
test('copies mutable chunks when write() is overridden', async () => {
123-
let consumed;
124-
let received;
125-
let notifyConsumed;
126-
const consumedPromise = new Promise((resolve) => {
127-
notifyConsumed = resolve;
128-
});
129-
const writable = new Writable({
130-
write(chunk, encoding, callback) {
131-
callback();
132-
},
133-
});
134-
writable.on('error', common.mustNotCall());
135-
const writer = Writable.toWeb(writable).getWriter();
136-
writable.write = common.mustCall((chunk) => {
137-
received = chunk;
138-
setImmediate(() => {
139-
consumed = Buffer.from(chunk);
140-
notifyConsumed();
141-
});
142-
return true;
143-
});
144-
const input = new Uint8Array([1, 2, 3, 4]);
145-
146-
await writer.write(input);
147-
input.fill(9);
148-
await consumedPromise;
149-
await writer.close();
150-
151-
assert.notStrictEqual(received.buffer, input.buffer);
152-
assert.deepStrictEqual(consumed, Buffer.from([1, 2, 3, 4]));
153-
});
154-
155122
test('does not trust a patched Writable.prototype.write', async () => {
156123
const originalWrite = Writable.prototype.write;
157124
let consumed;
@@ -302,24 +269,31 @@ suite('underlying Writable', () => {
302269
for (const ctor of ctors) {
303270
test(`passes through ${ctor.name} chunks`, async () => {
304271
const buffer = new ctor(4);
272+
let finishWrite;
305273
const writable = new Writable({
306274
objectMode: true,
307275
write: common.mustCall((chunk, encoding, callback) => {
308276
assert(chunk instanceof ctor);
309277
assert.strictEqual(chunk, buffer);
310-
callback();
278+
finishWrite = callback;
311279
}),
312280
});
313281
writable.on('error', common.mustNotCall());
314282
const writer = Writable.toWeb(writable).getWriter();
315-
await writer.write(buffer);
283+
const writePromise = writer.write(buffer);
284+
try {
285+
await completesWithin(writePromise);
286+
} finally {
287+
finishWrite();
288+
}
289+
await writer.close();
316290
});
317291
}
318292
});
319293
});
320294

321295
suite('underlying ServerResponse', () => {
322-
test('rejects invalid view types before cloning', async () => {
296+
test('rejects invalid view types', async () => {
323297
const response = createServerResponse();
324298
const writer = Writable.toWeb(response).getWriter();
325299

@@ -411,7 +385,8 @@ suite('underlying Duplex', () => {
411385
},
412386
});
413387
duplex.on('error', common.mustNotCall());
414-
const writer = Duplex.toWeb(duplex).writable.getWriter();
388+
const writer = Writable.toWeb(duplex).getWriter();
389+
duplex.resume();
415390
const input = new Uint8Array([1, 2, 3, 4]);
416391

417392
await writer.write(input);
@@ -431,20 +406,27 @@ suite('underlying Duplex', () => {
431406
for (const ctor of ctors) {
432407
test(`passes through ${ctor.name} chunks`, async () => {
433408
const buffer = new ctor(4);
409+
let finishWrite;
434410
const duplex = new Duplex({
435411
writableObjectMode: true,
436412
write: common.mustCall((chunk, encoding, callback) => {
437413
assert(chunk instanceof ctor);
438414
assert.strictEqual(chunk, buffer);
439-
callback();
415+
finishWrite = callback;
440416
}),
441417
read() {
442418
this.push(null);
443419
},
444420
});
445421
duplex.on('error', common.mustNotCall());
446422
const writer = Duplex.toWeb(duplex).writable.getWriter();
447-
await writer.write(buffer);
423+
const writePromise = writer.write(buffer);
424+
try {
425+
await completesWithin(writePromise);
426+
} finally {
427+
finishWrite();
428+
}
429+
await writer.close();
448430
});
449431
}
450432
});

0 commit comments

Comments
 (0)