It's unnecessary code which I'm not sure we ever used. In
retrospect, completely clearing the environment doesn't make
sense for the processes we spawn. We don't need to clobber
individual environment variables in our code, either
(and if we did for tests, we can use 'local').
- my %env = $opts->{-env} ? () : %ENV;
- if ($env) {
- foreach my $k (keys %$env) {
- my $v = $env->{$k};
- if (defined $v) {
- $env{$k} = $v;
- } else {
- delete $env{$k};
- }
- }
- }
+ my %env = $env ? (%ENV, %$env) : %ENV;
while (my ($k, $v) = each %env) {
push @env, "$k=$v";
}
while (my ($k, $v) = each %env) {
push @env, "$k=$v";
}
is($?, 0, 'sh exited successfully');
}
is($?, 0, 'sh exited successfully');
}
-{
- my ($r, $w);
- pipe $r, $w or die "pipe failed: $!";
- my $pid = spawn(['env'], {}, { -env => 1, 1 => fileno($w) });
- close $w or die "close pipe[1] failed: $!";
- ok(!defined(<$r>), 'read stdout of spawned from pipe');
- is(waitpid($pid, 0), $pid, 'waitpid succeeds on spawned process');
- is($?, 0, 'env(1) exited successfully');
-}
-
{
my $fh = popen_rd([qw(echo hello)]);
ok(fileno($fh) >= 0, 'tied fileno works');
{
my $fh = popen_rd([qw(echo hello)]);
ok(fileno($fh) >= 0, 'tied fileno works');