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'). --- lib/PublicInbox/Spawn.pm | 12 +----------- t/spawn.t | 10 ---------- 2 files changed, 1 insertion(+), 21 deletions(-)
diff --git a/lib/PublicInbox/Spawn.pm b/lib/PublicInbox/Spawn.pm index b946a663..6493ad38 100644 --- a/lib/PublicInbox/Spawn.pm +++ b/lib/PublicInbox/Spawn.pm @@ -193,17 +193,7 @@ sub spawn ($;$$) { my @env; $opts ||= {}; - 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"; } diff --git a/t/spawn.t b/t/spawn.t index ebebfb57..2e409157 100644 --- a/t/spawn.t +++ b/t/spawn.t @@ -38,16 +38,6 @@ use PublicInbox::Spawn qw(which spawn popen_rd); 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'); -- unsubscribe: meta+unsubscr...@public-inbox.org archive: https://public-inbox.org/meta/