'use strict'; const common = require('../common'); const assert = require('assert'); const { isMainThread } = require('worker_threads'); if (!isMainThread) { common.skip('process.execve is not available in Workers'); } else if (common.isWindows || common.isIBMi) { common.skip('process.execve is not available in Windows or IBM i'); } assert.throws( () => { process.execve( `${process.execPath}_non_existing`, [process.execPath, 'arg'], ); }, (err) => { assert.ok(err instanceof Error); assert.strictEqual(err.code, 'ENOENT'); assert.strictEqual(err.syscall, 'execve'); assert.strictEqual(typeof err.errno, 'number'); assert.ok(err.errno > 0, `expected positive errno, got ${err.errno}`); assert.match(err.path, /_non_existing$/); return true; }, ); assert.strictEqual(process.stdout.writable, true); assert.strictEqual(process.stderr.writable, true); assert.strictEqual(typeof process.pid, 'number'); let tickFired = false; process.nextTick(common.mustCall(() => { tickFired = true; })); setImmediate(common.mustCall(() => { assert.strictEqual(tickFired, true); }));