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('relative_no_dot'); }, 38 // eslint-disable-next-line node-core/no-unescaped-regexp-dot 39 /^((?!Wrap file:\/\/ URLs with `new URL`).)*$/s 40 ); 41} 42 43{ 44 const expectedErr = { 45 code: 'ERR_INVALID_URL_SCHEME', 46 name: 'TypeError' 47 }; 48 assert.throws(() => { new Worker(new URL('https://www.url.com')); }, 49 expectedErr); 50 assert.throws(() => { new Worker(new URL('data:application/javascript,')); }, 51 expectedErr); 52} 53