@@ -93,6 +93,8 @@ const {
93
93
94
94
const MAX_BUFFER = 1024 * 1024 ;
95
95
96
+ const isZOS = process . platform === 'os390' ;
97
+
96
98
/**
97
99
* Spawns a new Node.js process + fork.
98
100
* @param {string|URL } modulePath
@@ -524,6 +526,14 @@ ObjectDefineProperty(execFile, promisify.custom, {
524
526
value : customPromiseExecFunction ( execFile )
525
527
} ) ;
526
528
529
+ function copyProcessEnvToEnv ( env , name , optionEnv ) {
530
+ if ( process . env [ name ] &&
531
+ ( ! optionEnv ||
532
+ ! ObjectPrototypeHasOwnProperty ( optionEnv , name ) ) ) {
533
+ env [ name ] = process . env [ name ] ;
534
+ }
535
+ }
536
+
527
537
function normalizeSpawnArguments ( file , args , options ) {
528
538
validateString ( file , 'file' ) ;
529
539
@@ -630,9 +640,19 @@ function normalizeSpawnArguments(file, args, options) {
630
640
631
641
// process.env.NODE_V8_COVERAGE always propagates, making it possible to
632
642
// 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 ) ;
636
656
}
637
657
638
658
let envKeys = [ ] ;
0 commit comments