| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { Worker, parentPort, SHARE_ENV, workerData } = require('worker_threads'); |
| |
| if (!workerData) { |
| process.env.SET_IN_PARENT = 'set'; |
| assert.strictEqual(process.env.SET_IN_PARENT, 'set'); |
| |
| const w = new Worker(__filename, { |
| workerData: 'runInWorker', |
| env: SHARE_ENV |
| }).on('exit', common.mustCall(() => { |
| // Env vars from the child thread are not set globally. |
| assert.strictEqual(process.env.SET_IN_WORKER, 'set'); |
| })); |
| |
| process.env.SET_IN_PARENT_AFTER_CREATION = 'set'; |
| w.postMessage({}); |
| } else { |
| assert.strictEqual(workerData, 'runInWorker'); |
| |
| // Env vars from the parent thread are inherited. |
| assert.strictEqual(process.env.SET_IN_PARENT, 'set'); |
| |
| process.env.SET_IN_WORKER = 'set'; |
| assert.strictEqual(process.env.SET_IN_WORKER, 'set'); |
| |
| parentPort.once('message', common.mustCall(() => { |
| assert.strictEqual(process.env.SET_IN_PARENT_AFTER_CREATION, 'set'); |
| })); |
| } |