Skip to content

Commit eb31a9c

Browse files
committed
fixup! add tests
1 parent f2dff63 commit eb31a9c

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

test/parallel/test-webstreams-finished.js

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,93 @@ const { finished: finishedPromise } = require('stream/promises');
230230
assert.strictEqual(err?.message, 'asd');
231231
});
232232
}
233+
234+
{
235+
// Check pre-cancelled
236+
const signal = new EventTarget();
237+
signal.aborted = true;
238+
239+
const rs = new ReadableStream({
240+
start() {}
241+
});
242+
finished(rs, { signal }, common.mustCall((err) => {
243+
assert.strictEqual(err.name, 'AbortError');
244+
}));
245+
}
246+
247+
{
248+
// Check cancelled before the stream ends sync.
249+
const ac = new AbortController();
250+
const { signal } = ac;
251+
252+
const rs = new ReadableStream({
253+
start() {}
254+
});
255+
finished(rs, { signal }, common.mustCall((err) => {
256+
assert.strictEqual(err.name, 'AbortError');
257+
}));
258+
259+
ac.abort();
260+
}
261+
262+
{
263+
// Check cancelled before the stream ends async.
264+
const ac = new AbortController();
265+
const { signal } = ac;
266+
267+
const rs = new ReadableStream({
268+
start() {}
269+
});
270+
setTimeout(() => ac.abort(), 1);
271+
finished(rs, { signal }, common.mustCall((err) => {
272+
assert.strictEqual(err.name, 'AbortError');
273+
}));
274+
}
275+
276+
{
277+
// Check cancelled after doesn't throw.
278+
const ac = new AbortController();
279+
const { signal } = ac;
280+
281+
const rs = new ReadableStream({
282+
start(controller) {
283+
controller.enqueue('asd');
284+
controller.close();
285+
}
286+
});
287+
finished(rs, { signal }, common.mustSucceed());
288+
289+
rs.getReader().read().then(common.mustCall((chunk) => {
290+
assert.strictEqual(chunk.value, 'asd');
291+
setImmediate(() => ac.abort());
292+
}));
293+
}
294+
295+
{
296+
// Promisified abort works
297+
async function run() {
298+
const ac = new AbortController();
299+
const { signal } = ac;
300+
const rs = new ReadableStream({
301+
start() {}
302+
});
303+
setImmediate(() => ac.abort());
304+
await finishedPromise(rs, { signal });
305+
}
306+
307+
assert.rejects(run, { name: 'AbortError' }).then(common.mustCall());
308+
}
309+
310+
{
311+
// Promisified pre-aborted works
312+
async function run() {
313+
const signal = new EventTarget();
314+
signal.aborted = true;
315+
const rs = new ReadableStream({
316+
start() {}
317+
});
318+
await finishedPromise(rs, { signal });
319+
}
320+
321+
assert.rejects(run, { name: 'AbortError' }).then(common.mustCall());
322+
}

0 commit comments

Comments
 (0)