process: make execve's args argument optional · nodejs/node@3d2f919

4 files changed

lines changed

Original file line numberDiff line numberDiff line change

@@ -279,7 +279,7 @@ function wrapProcessMethods(binding) {

279279

return true;

280280

}

281281
282-

function execve(execPath, args, env) {

282+

function execve(execPath, args = [], env) {

283283

emitExperimentalWarning('process.execve');

284284
285285

const { isMainThread } = require('internal/worker');

Original file line numberDiff line numberDiff line change

@@ -1336,6 +1336,13 @@

13361336

}],

13371337

]

13381338

}, # overlapped-checker

1339+

{

1340+

'target_name': 'nop',

1341+

'type': 'executable',

1342+

'sources': [

1343+

'test/nop/nop.c',

1344+

]

1345+

}, # nop

13391346

{

13401347

'target_name': 'node_js2c',

13411348

'type': 'executable',

Original file line numberDiff line numberDiff line change

@@ -0,0 +1,3 @@

1+

int main(void) {

2+

return 0;

3+

}

Original file line numberDiff line numberDiff line change

@@ -0,0 +1,25 @@

1+

'use strict';

2+
3+

const { skip, isWindows, isIBMi } = require('../common');

4+

const { fail } = require('assert');

5+

const { isMainThread } = require('worker_threads');

6+

const { dirname, join } = require('path');

7+

const { existsSync } = require('fs');

8+
9+

if (!isMainThread) {

10+

skip('process.execve is not available in Workers');

11+

} else if (isWindows || isIBMi) {

12+

skip('process.execve is not available in Windows or IBM i');

13+

}

14+
15+

// Get full path to the executable used for the test

16+

const executable = join(dirname(process.execPath), 'nop');

17+
18+

// Sanity check that the binary exists

19+

if (!existsSync(executable)) {

20+

skip(executable + ' binary is not available');

21+

}

22+
23+

process.execve(executable);

24+

// If process.execve succeeds, this should never be executed.

25+

fail('process.execve failed');