40 lines
933 B
TypeScript
40 lines
933 B
TypeScript
// Copyright 2024 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { assert } from 'chai';
|
|
import { Readable } from 'node:stream';
|
|
import { pipeline } from 'node:stream/promises';
|
|
|
|
import { finalStream } from '../../util/finalStream';
|
|
|
|
describe('finalStream', () => {
|
|
it('should invoke callback before pipeline resolves', async () => {
|
|
let called = false;
|
|
await pipeline(
|
|
Readable.from(['abc']),
|
|
finalStream(async () => {
|
|
// Forcing next tick
|
|
await Promise.resolve();
|
|
|
|
called = true;
|
|
})
|
|
);
|
|
|
|
assert.isTrue(called);
|
|
});
|
|
|
|
it('should propagate errors from callback', async () => {
|
|
await assert.isRejected(
|
|
pipeline(
|
|
Readable.from(['abc']),
|
|
finalStream(async () => {
|
|
// Forcing next tick
|
|
await Promise.resolve();
|
|
|
|
throw new Error('failure');
|
|
})
|
|
),
|
|
'failure'
|
|
);
|
|
});
|
|
});
|