| 'use strict'; |
| |
| const { isWindows, isIBMi, skip } = require('../common'); |
| const { deepStrictEqual, fail, strictEqual } = require('assert'); |
| const { isMainThread } = require('worker_threads'); |
| |
| if (!isMainThread) { |
| skip('process.execve is not available in Workers'); |
| } else if (isWindows || isIBMi) { |
| skip('process.execve is not available in Windows or IBM i'); |
| } |
| |
| if (process.argv[2] === 'replaced') { |
| deepStrictEqual(process.argv, [process.execPath, __filename, 'replaced']); |
| strictEqual(process.env.CWD, process.cwd()); |
| strictEqual(process.env.EXECVE_A, 'FIRST'); |
| strictEqual(process.env.EXECVE_B, 'SECOND'); |
| } else { |
| process.execve( |
| process.execPath, |
| [process.execPath, __filename, 'replaced'], |
| { ...process.env, EXECVE_A: 'FIRST', EXECVE_B: 'SECOND', CWD: process.cwd() } |
| ); |
| |
| // If process.execve succeed, this should never be executed. |
| fail('process.execve failed'); |
| } |