1'use strict'; 2 3require('../common'); 4const path = require('path'); 5const assert = require('assert'); 6const { Worker } = require('worker_threads'); 7 8{ 9 const expectedErr = { 10 code: 'ERR_WORKER_UNSUPPORTED_EXTENSION', 11 name: 'TypeError' 12 }; 13 assert.throws(() => { new Worker('/b'); }, expectedErr); 14 assert.throws(() => { new Worker('/c.wasm'); }, expectedErr); 15 assert.throws(() => { new Worker('/d.txt'); }, expectedErr); 16 assert.throws(() => { new Worker(new URL('file:///C:/e.wasm')); }, expectedErr); 17} 18 19{ 20 const expectedErr = { 21 code: 'ERR_WORKER_PATH', 22 name: 'TypeError' 23 }; 24 const existingRelPathNoDot = path.relative('.', __filename); 25 assert.throws(() => { new Worker(existingRelPathNoDot); }, expectedErr); 26 assert.throws(() => { new Worker('relative_no_dot'); }, expectedErr); 27 assert.throws(() => { new Worker('file:///file_url'); }, expectedErr); 28 assert.throws(() => { new Worker('https://www.url.com'); }, expectedErr); 29} 30 31{ 32 assert.throws( 33 () => { new Worker('file:///file_url'); }, 34 /Wrap file:\/\/ URLs with `new URL`/ 35 ); 36 assert.throws( 37 () => { new Worker('data:text/javascript,'); }, 38 /Wrap data: URLs with `new URL`/ 39 ); 40 assert.throws( 41 () => { new Worker('relative_no_dot'); }, 42 // eslint-disable-next-line node-core/no-unescaped-regexp-dot 43 /^((?!Wrap file:\/\/ URLs with `new URL`).)*$/s 44 ); 45} 46 47{ 48 const expectedErr = { 49 code: 'ERR_INVALID_URL_SCHEME', 50 name: 'TypeError' 51 }; 52 assert.throws(() => { new Worker(new URL('https://www.url.com')); }, 53 expectedErr); 54} 55