diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index f7a62364b6107a..112df6ce6821e1 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -129,7 +129,7 @@ process.domain = null; exitCode = code; }, enumerable: true, - configurable: false, + configurable: true, }); } process._exiting = false; diff --git a/test/parallel/test-process-exit-code-validation.js b/test/parallel/test-process-exit-code-validation.js index 9987b58c867c99..0dc454bf2695ae 100644 --- a/test/parallel/test-process-exit-code-validation.js +++ b/test/parallel/test-process-exit-code-validation.js @@ -110,17 +110,14 @@ if (process.argv[2] === undefined) { // Check process.exitCode for (const arg of invalids) { - debug(`invaild code: ${inspect(arg.code)}`); + debug(`invalid code: ${inspect(arg.code)}`); throws(() => (process.exitCode = arg.code), new RegExp(arg.pattern)); } for (const arg of valids) { - debug(`vaild code: ${inspect(arg.code)}`); + debug(`valid code: ${inspect(arg.code)}`); process.exitCode = arg.code; } - throws(() => { - delete process.exitCode; - }, /Cannot delete property 'exitCode' of #/); process.exitCode = 0; // Check process.exit([code]) @@ -141,3 +138,10 @@ if (process.argv[2] === undefined) { process.exit(args[index].code); } } + +const origExitCode = Object.getOwnPropertyDescriptor(process, 'exitCode'); +try { + delete process.exitCode; +} finally { + Object.defineProperty(process, 'exitCode', origExitCode); +}