• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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