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_PATH',
11    name: 'TypeError'
12  };
13  const existingRelPathNoDot = path.relative('.', __filename);
14  assert.throws(() => { new Worker(existingRelPathNoDot); }, expectedErr);
15  assert.throws(() => { new Worker('relative_no_dot'); }, expectedErr);
16  assert.throws(() => { new Worker('file:///file_url'); }, expectedErr);
17  assert.throws(() => { new Worker('https://www.url.com'); }, expectedErr);
18}
19
20{
21  assert.throws(
22    () => { new Worker('file:///file_url'); },
23    /Wrap file:\/\/ URLs with `new URL`/
24  );
25  assert.throws(
26    () => { new Worker('data:text/javascript,'); },
27    /Wrap data: URLs with `new URL`/
28  );
29  assert.throws(
30    () => { new Worker('relative_no_dot'); },
31    // eslint-disable-next-line node-core/no-unescaped-regexp-dot
32    /^((?!Wrap file:\/\/ URLs with `new URL`).)*$/s
33  );
34}
35
36{
37  const expectedErr = {
38    code: 'ERR_INVALID_URL_SCHEME',
39    name: 'TypeError'
40  };
41  assert.throws(() => { new Worker(new URL('https://www.url.com')); },
42                expectedErr);
43}
44