mirror of
https://github.com/nodejs/node.git
synced 2025-05-05 12:04:25 +00:00

The explicit goal is to let users use `import.meta.url` to re-load thecurrent module inside a Worker instance. Fixes: https://github.com/nodejs/node/issues/30780 PR-URL: https://github.com/nodejs/node/pull/31664 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
'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'); },
|
|
/If you want to pass a file:\/\/ URL, you must wrap it around `new URL`/
|
|
);
|
|
assert.throws(
|
|
() => { new Worker('relative_no_dot'); },
|
|
// eslint-disable-next-line node-core/no-unescaped-regexp-dot
|
|
/^((?!If you want to pass a file:\/\/ URL, you must wrap it around `new URL`).)*$/s
|
|
);
|
|
}
|
|
|
|
{
|
|
const expectedErr = {
|
|
code: 'ERR_INVALID_URL_SCHEME',
|
|
name: 'TypeError'
|
|
};
|
|
assert.throws(() => { new Worker(new URL('https://www.url.com')); },
|
|
expectedErr);
|
|
assert.throws(() => { new Worker(new URL('data:application/javascript,')); },
|
|
expectedErr);
|
|
}
|