| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { Worker, isMainThread, workerData } = require('worker_threads'); |
| |
| if (isMainThread) { |
| assert.throws(() => { |
| new Worker(__filename, { argv: 'foo' }); |
| }, { |
| code: 'ERR_INVALID_ARG_TYPE' |
| }); |
| |
| [ |
| new Worker(__filename, { |
| argv: [null, 'foo', 123, Symbol('bar')], |
| // Asserts only if the worker is started by the test. |
| workerData: 'assert-argv' |
| }), |
| new Worker(` |
| const assert = require('assert'); |
| assert.deepStrictEqual( |
| process.argv, |
| [process.execPath, '[worker eval]'] |
| ); |
| `, { |
| eval: true |
| }), |
| new Worker(` |
| const assert = require('assert'); |
| assert.deepStrictEqual( |
| process.argv, |
| [process.execPath, '[worker eval]', 'null', 'foo', '123', |
| String(Symbol('bar'))] |
| ); |
| `, { |
| argv: [null, 'foo', 123, Symbol('bar')], |
| eval: true |
| }) |
| ].forEach((worker) => { |
| worker.on('exit', common.mustCall((code) => { |
| assert.strictEqual(code, 0); |
| })); |
| }); |
| } else if (workerData === 'assert-argv') { |
| assert.deepStrictEqual( |
| process.argv, |
| [process.execPath, __filename, 'null', 'foo', '123', String(Symbol('bar'))] |
| ); |
| } |