summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-execargv.js
blob: a2b52216165d778779bedd7547f8987404e70cd6 (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
'use strict';
const common = require('../common');
const assert = require('assert');

// This test ensures that Workers have the ability to get
// their own command line flags.

const { Worker } = require('worker_threads');
const { StringDecoder } = require('string_decoder');
const decoder = new StringDecoder('utf8');

// Do not use isMainThread so that this test itself can be run inside a Worker.
if (!process.env.HAS_STARTED_WORKER) {
  process.env.HAS_STARTED_WORKER = 1;
  const w = new Worker(__filename, { execArgv: ['--trace-warnings'] });
  w.stderr.on('data', common.mustCall((chunk) => {
    const error = decoder.write(chunk);
    assert.ok(
      /Warning: some warning[\s\S]*at Object\.<anonymous>/.test(error)
    );
  }));

  new Worker(
    "require('worker_threads').parentPort.postMessage(process.execArgv)",
    { eval: true, execArgv: ['--trace-warnings'] })
    .on('message', common.mustCall((data) => {
      assert.deepStrictEqual(data, ['--trace-warnings']);
    }));
} else {
  process.emitWarning('some warning');
  assert.deepStrictEqual(process.execArgv, ['--trace-warnings']);
}