You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					48 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					48 lines
				
				1.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import { test } from 'tap'
							 | 
						||
| 
								 | 
							
								import { readFile } from 'fs'
							 | 
						||
| 
								 | 
							
								import ThreadStream from '../index.js'
							 | 
						||
| 
								 | 
							
								import { join } from 'desm'
							 | 
						||
| 
								 | 
							
								import { pathToFileURL } from 'url'
							 | 
						||
| 
								 | 
							
								import { file } from './helper.js'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function basic (text, filename) {
							 | 
						||
| 
								 | 
							
								  test(text, function (t) {
							 | 
						||
| 
								 | 
							
								    t.plan(5)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const dest = file()
							 | 
						||
| 
								 | 
							
								    const stream = new ThreadStream({
							 | 
						||
| 
								 | 
							
								      filename,
							 | 
						||
| 
								 | 
							
								      workerData: { dest },
							 | 
						||
| 
								 | 
							
								      sync: true
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stream.on('finish', () => {
							 | 
						||
| 
								 | 
							
								      readFile(dest, 'utf8', (err, data) => {
							 | 
						||
| 
								 | 
							
								        t.error(err)
							 | 
						||
| 
								 | 
							
								        t.equal(data, 'hello world\nsomething else\n')
							 | 
						||
| 
								 | 
							
								      })
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stream.on('close', () => {
							 | 
						||
| 
								 | 
							
								      t.pass('close emitted')
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    t.ok(stream.write('hello world\n'))
							 | 
						||
| 
								 | 
							
								    t.ok(stream.write('something else\n'))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    stream.end()
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								basic('esm with path', join(import.meta.url, 'to-file.mjs'))
							 | 
						||
| 
								 | 
							
								basic('esm with file URL', pathToFileURL(join(import.meta.url, 'to-file.mjs')).href)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								basic('(ts -> es6) esm with path', join(import.meta.url, 'ts', 'to-file.es6.mjs'))
							 | 
						||
| 
								 | 
							
								basic('(ts -> es6) esm with file URL', pathToFileURL(join(import.meta.url, 'ts', 'to-file.es6.mjs')).href)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								basic('(ts -> es2017) esm with path', join(import.meta.url, 'ts', 'to-file.es2017.mjs'))
							 | 
						||
| 
								 | 
							
								basic('(ts -> es2017) esm with file URL', pathToFileURL(join(import.meta.url, 'ts', 'to-file.es2017.mjs')).href)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								basic('(ts -> esnext) esm with path', join(import.meta.url, 'ts', 'to-file.esnext.mjs'))
							 | 
						||
| 
								 | 
							
								basic('(ts -> esnext) esm with file URL', pathToFileURL(join(import.meta.url, 'ts', 'to-file.esnext.mjs')).href)
							 |