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/

Reply via email to