41 lines
		
	
	
	
		
			933 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			41 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' | ||
|  |     ); | ||
|  |   }); | ||
|  | }); |