Skip to content

Commit 3dbbaa0

Browse files
alexcfyungdanielleadams
authored andcommitted
lib: pass env variables to child process on z/OS
PR-URL: #42255 Reviewed-By: Michael Dawson <midawson@redhat.com>
1 parent 3f32526 commit 3dbbaa0

1 file changed

Lines changed: 23 additions & 3 deletions

File tree

‎lib/child_process.js‎

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ const {
9393

9494
constMAX_BUFFER=1024*1024;
9595

96+
constisZOS=process.platform==='os390';
97+
9698
/**
9799
* Spawns a new Node.js process + fork.
98100
* @param {string|URL} modulePath
@@ -524,6 +526,14 @@ ObjectDefineProperty(execFile, promisify.custom, {
524526
value: customPromiseExecFunction(execFile)
525527
});
526528

529+
functioncopyProcessEnvToEnv(env,name,optionEnv){
530+
if(process.env[name]&&
531+
(!optionEnv||
532+
!ObjectPrototypeHasOwnProperty(optionEnv,name))){
533+
env[name]=process.env[name];
534+
}
535+
}
536+
527537
functionnormalizeSpawnArguments(file,args,options){
528538
validateString(file,'file');
529539

@@ -630,9 +640,19 @@ function normalizeSpawnArguments(file, args, options) {
630640

631641
// process.env.NODE_V8_COVERAGE always propagates, making it possible to
632642
// collect coverage for programs that spawn with white-listed environment.
633-
if(process.env.NODE_V8_COVERAGE&&
634-
!ObjectPrototypeHasOwnProperty(options.env||{},'NODE_V8_COVERAGE')){
635-
env.NODE_V8_COVERAGE=process.env.NODE_V8_COVERAGE;
643+
copyProcessEnvToEnv(env,'NODE_V8_COVERAGE',options.env);
644+
645+
if(isZOS){
646+
// The following environment variables must always propagate if set.
647+
copyProcessEnvToEnv(env,'_BPXK_AUTOCVT',options.env);
648+
copyProcessEnvToEnv(env,'_CEE_RUNOPTS',options.env);
649+
copyProcessEnvToEnv(env,'_TAG_REDIR_ERR',options.env);
650+
copyProcessEnvToEnv(env,'_TAG_REDIR_IN',options.env);
651+
copyProcessEnvToEnv(env,'_TAG_REDIR_OUT',options.env);
652+
copyProcessEnvToEnv(env,'STEPLIB',options.env);
653+
copyProcessEnvToEnv(env,'LIBPATH',options.env);
654+
copyProcessEnvToEnv(env,'_EDC_SIG_DFLT',options.env);
655+
copyProcessEnvToEnv(env,'_EDC_SUSV3',options.env);
636656
}
637657

638658
letenvKeys=[];

0 commit comments

Comments
 (0)