summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-unsupported-path.js
blob: 227b759dcfe753a2b31b90d1362a757dc12a4a79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
'use strict';

require('../common');
const path = require('path');
const assert = require('assert');
const { Worker } = require('worker_threads');

{
  const expectedErr = {
    code: 'ERR_WORKER_UNSUPPORTED_EXTENSION',
    name: 'TypeError'
  };
  assert.throws(() => { new Worker('/b'); }, expectedErr);
  assert.throws(() => { new Worker('/c.wasm'); }, expectedErr);
  assert.throws(() => { new Worker('/d.txt'); }, expectedErr);
  assert.throws(() => { new Worker(new URL('file:///C:/e.wasm')); }, expectedErr);
}

{
  const expectedErr = {
    code: 'ERR_WORKER_PATH',
    name: 'TypeError'
  };
  const existingRelPathNoDot = path.relative('.', __filename);
  assert.throws(() => { new Worker(existingRelPathNoDot); }, expectedErr);
  assert.throws(() => { new Worker('relative_no_dot'); }, expectedErr);
  assert.throws(() => { new Worker('file:///file_url'); }, expectedErr);
  assert.throws(() => { new Worker('https://www.url.com'); }, expectedErr);
}

{
  assert.throws(
    () => { new Worker('file:///file_url'); },
    /Wrap file:\/\/ URLs with `new URL`/
  );
  assert.throws(
    () => { new Worker('data:text/javascript,'); },
    /Wrap data: URLs with `new URL`/
  );
  assert.throws(
    () => { new Worker('relative_no_dot'); },
    // eslint-disable-next-line node-core/no-unescaped-regexp-dot
    /^((?!Wrap file:\/\/ URLs with `new URL`).)*$/s
  );
}

{
  const expectedErr = {
    code: 'ERR_INVALID_URL_SCHEME',
    name: 'TypeError'
  };
  assert.throws(() => { new Worker(new URL('https://www.url.com')); },
                expectedErr);
}