diff options
author | Thiago Jung Bauermann <bauermann@kolabnow.com> | 2022-06-10 12:39:18 -0300 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2022-06-11 00:21:46 +0000 |
commit | 5593489d9c3ce22b1942f35c7ebb0e06fcf2bfa8 (patch) | |
tree | 33555e33f679fac416a7b8e5340898eab9b3cb26 /t | |
parent | 60848de2194f0c518bd660860e9458dd765d0a3e (diff) | |
download | public-inbox-5593489d9c3ce22b1942f35c7ebb0e06fcf2bfa8.tar.gz |
In the container used to build packages of the GNU Guix distribution, PID 1 runs as the same user as the test so this spawn that should fail actually succeeds. Fix the problem by going through different PIDs and picking one that either doesn't exist or we aren't allowed to signal.
Diffstat (limited to 't')
-rw-r--r-- | t/spawn.t | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -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 ($@)"; |