%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const assert = require('assert'); const { Worker, isMainThread, parentPort } = require('worker_threads'); // Verify that cwd changes from the main thread are handled correctly in // workers. // Do not use isMainThread directly, otherwise the test would time out in case // it's started inside of another worker thread. if (!process.env.HAS_STARTED_WORKER) { process.env.HAS_STARTED_WORKER = '1'; if (!isMainThread) { common.skip('This test can only run as main thread'); } // Normalize the current working dir to also work with the root folder. process.chdir(__dirname); assert(!process.cwd.toString().includes('Atomics.load')); // 1. Start the first worker. const w = new Worker(__filename); w.once('message', common.mustCall((message) => { // 5. Change the cwd and send that to the spawned worker. assert.strictEqual(message, process.cwd()); process.chdir('..'); w.postMessage(process.cwd()); })); } else if (!process.env.SECOND_WORKER) { process.env.SECOND_WORKER = '1'; // 2. Save the current cwd and verify that `process.cwd` includes the // Atomics.load call and spawn a new worker. const cwd = process.cwd(); assert(process.cwd.toString().includes('Atomics.load')); const w = new Worker(__filename); w.once('message', common.mustCall((message) => { // 4. Verify at the current cwd is identical to the received and the // original one. assert.strictEqual(process.cwd(), message); assert.strictEqual(message, cwd); parentPort.postMessage(cwd); })); parentPort.once('message', common.mustCall((message) => { // 6. Verify that the current cwd is identical to the received one but not // with the original one. assert.strictEqual(process.cwd(), message); assert.notStrictEqual(message, cwd); w.postMessage(message); })); } else { // 3. Save the current cwd, post back to the "main" thread and verify that // `process.cwd` includes the Atomics.load call. const cwd = process.cwd(); // Send the current cwd to the parent. parentPort.postMessage(cwd); assert(process.cwd.toString().includes('Atomics.load')); parentPort.once('message', common.mustCall((message) => { // 7. Verify that the current cwd is identical to the received one but // not with the original one. assert.strictEqual(process.cwd(), message); assert.notStrictEqual(message, cwd); })); }