8 use Test::More tests => 5;
13 my $filename = '/tmp/run_perl_test';
15 my $code = "open my \$fh, q[>], q[$filename] or die \$!; for my \$key (sort keys %ENV) { print \$fh qq[\$key:\$ENV{\$key}\n] } close \$fh";
17 my $ld_path = $Config::Config{ldlibpthname};
20 'MSWin32' => [ qw<SystemRoot> ],
22 'cygwin' => [ qw<PATH> ],
26 push @$_, $ld_path for values %expected_vars;
30 grep !$uniq{$_}++, map @$_, values %expected_vars;
32 push @all_vars, 'DUMMY';
34 my @ignored_vars = qw<
35 VERSIONER_PERL_PREFER_32_BIT
36 VERSIONER_PERL_VERSION
37 __CF_USER_TEXT_ENCODING
40 for my $os (qw<MSWin32 android darwin cygwin linux>) {
41 1 while unlink $filename;
46 @ENV{@all_vars} = @all_vars;
52 open my $fh, '<', $filename;
57 %subprocess_env = map { split /:/, $_, 2 } @lines;
60 delete @subprocess_env{@ignored_vars};
62 my $got = join "\n", sort keys %subprocess_env;
63 my $exp = join "\n", sort @{ $expected_vars{$os} || [] };
65 is $got, $exp, "run_perl preserving $os ENV vars";