all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
blob 2739b1974de8ae611256c3e7f6603dafb80637a6 1455 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
From 5593489d9c3ce22b1942f35c7ebb0e06fcf2bfa8 Mon Sep 17 00:00:00 2001
From: Thiago Jung Bauermann <bauermann@kolabnow.com>
Date: Fri, 10 Jun 2022 12:39:18 -0300
Subject: [PATCH] t/spawn: Find invalid PID to try to join its process group

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.
---

This patch is taken from the public-inbox repository and will appear in the
release after v1.8.

 t/spawn.t | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/t/spawn.t b/t/spawn.t
index 6168c1f6171c..5fc99a2a101c 100644
--- 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 ($@)";

debug log:

solving 2739b1974de8 ...
found 2739b1974de8 in https://git.savannah.gnu.org/cgit/guix.git

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.