summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-process-argv.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel/test-worker-process-argv.js')
-rw-r--r--test/parallel/test-worker-process-argv.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/parallel/test-worker-process-argv.js b/test/parallel/test-worker-process-argv.js
new file mode 100644
index 0000000000..ebdebe02ab
--- /dev/null
+++ b/test/parallel/test-worker-process-argv.js
@@ -0,0 +1,49 @@
+'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'))]
+ );
+}