]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/spawn.t
t/spawn: Find invalid PID to try to join its process group
[public-inbox.git] / t / spawn.t
index a17b72d97ff5926d41477647b0ffc273d16d5dc2..5fc99a2a101c8c2c83466e515a84bba471b9546e 100644 (file)
--- a/t/spawn.t
+++ b/t/spawn.t
@@ -24,7 +24,18 @@ SKIP: {
        is(waitpid($pid, 0), $pid, 'waitpid succeeds on spawned process');
        is($?, 0, 'true exited successfully');
        pipe(my ($r, $w)) or BAIL_OUT;
-       $pid = eval { spawn(['true'], undef, { pgid => 1, 2 => $w }) };
+
+       # Find invalid PID to try to join its process group.
+       my $wrong_pgid = 1;
+       for (my $i=0x7fffffff; $i >= 2; $i--) {
+               if (kill(0, $i) == 0) {
+                       $wrong_pgid = $i;
+                       last;
+               }
+       }
+
+       # Test spawn behavior when it can't join the requested process group.
+       $pid = eval { spawn(['true'], undef, { pgid => $wrong_pgid, 2 => $w }) };
        close $w;
        my $err = do { local $/; <$r> };
        # diag "$err ($@)";
@@ -121,6 +132,12 @@ EOF
        isnt($?, 0, '$? set properly: '.$?);
 }
 
+{
+       local $ENV{GIT_CONFIG} = '/path/to/this/better/not/exist';
+       my $fh = popen_rd([qw(env)], { GIT_CONFIG => undef });
+       ok(!grep(/^GIT_CONFIG=/, <$fh>), 'GIT_CONFIG clobbered');
+}
+
 { # ->CLOSE vs ->DESTROY waitpid caller distinction
        my @c;
        my $fh = popen_rd(['true'], undef, { cb => sub { @c = caller } });