1'use strict'; 2const common = require('../common'); 3const assert = require('assert'); 4const { Worker, parentPort, SHARE_ENV, workerData } = require('worker_threads'); 5 6if (!workerData) { 7 process.env.SET_IN_PARENT = 'set'; 8 assert.strictEqual(process.env.SET_IN_PARENT, 'set'); 9 10 const w = new Worker(__filename, { 11 workerData: 'runInWorker', 12 env: SHARE_ENV 13 }).on('exit', common.mustCall(() => { 14 // Env vars from the child thread are not set globally. 15 assert.strictEqual(process.env.SET_IN_WORKER, 'set'); 16 })); 17 18 process.env.SET_IN_PARENT_AFTER_CREATION = 'set'; 19 w.postMessage({}); 20} else { 21 assert.strictEqual(workerData, 'runInWorker'); 22 23 // Env vars from the parent thread are inherited. 24 assert.strictEqual(process.env.SET_IN_PARENT, 'set'); 25 26 process.env.SET_IN_WORKER = 'set'; 27 assert.strictEqual(process.env.SET_IN_WORKER, 'set'); 28 29 parentPort.once('message', common.mustCall(() => { 30 assert.strictEqual(process.env.SET_IN_PARENT_AFTER_CREATION, 'set'); 31 })); 32} 33