summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-process-argv.js
blob: ebdebe02ab855c189b299cf8fbf9827a1a137cc7 (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
'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'))]
  );
}