'use strict'; const { skip, isWindows, isIBMi } = require('../common'); const { throws } = require('assert'); const { isMainThread } = require('worker_threads'); if (!isMainThread) { skip('process.execve is not available in Workers'); } if (!isWindows && !isIBMi) { // Invalid path name { throws(() => { process.execve(123); }, { name: 'TypeError', code: 'ERR_INVALID_ARG_TYPE', message: 'The "execPath" argument must be of type string. Received type number (123)' }); } // Invalid args { throws(() => { process.execve(process.execPath, '123'); }, { name: 'TypeError', code: 'ERR_INVALID_ARG_TYPE', message: `The "args" argument must be an instance of Array. Received type string ('123')` }); throws(() => { process.execve(process.execPath, [123]); }, { name: 'TypeError', code: 'ERR_INVALID_ARG_VALUE', message: "The argument 'args[0]' must be a string without null bytes. Received 123", }); throws(() => { process.execve(process.execPath, ['123', 'abc\u0000cde']); }, { name: 'TypeError', code: 'ERR_INVALID_ARG_VALUE', message: "The argument 'args[1]' must be a string without null bytes. Received 'abc\\x00cde'", }); } // Invalid env { throws(() => { process.execve(process.execPath, [], '123'); }, { name: 'TypeError', code: 'ERR_INVALID_ARG_TYPE', message: `The "env" argument must be of type object. Received type string ('123')` }); throws(() => { process.execve(process.execPath, [], { abc: 123 }); }, { name: 'TypeError', code: 'ERR_INVALID_ARG_VALUE', message: "The argument 'env' must be an object with string keys and values without null bytes. Received { abc: 123 }" }); throws(() => { process.execve(process.execPath, [], { abc: '123', cde: 'abc\u0000cde' }); }, { name: 'TypeError', code: 'ERR_INVALID_ARG_VALUE', message: "The argument 'env' must be an object with string keys and values without null bytes. " + "Received { abc: '123', cde: 'abc\\x00cde' }", }); } } else { throws(() => { process.execve( process.execPath, [__filename, 'replaced'], { ...process.env, EXECVE_A: 'FIRST', EXECVE_B: 'SECOND', CWD: process.cwd() } ); }, { name: 'TypeError', code: 'ERR_FEATURE_UNAVAILABLE_ON_PLATFORM' }); }