861108ca6a
This patch makes the public-inbox testsuite pass. Some tests are skipped, so the test coverage could likely be increased with more massaging. Perhaps the most significant change is using tini to run the testsuite so that the testsuite's sub-processes are reaped. The ‘check’ phase is based on the one from the mutter package. Thanks to Maxim Cournoyer for pointing out this solution. * gnu/packages/patches/public-inbox-fix-spawn-test.patch: New file. * gnu/local.mk (dist_patch_DATA): Add new patch. * gnu/packages/mail.scm (public-inbox)[source]: Add new patch. [arguments]<#:tests?>: Remove argument. <#:imported-modules>: Add argument. <#:modules>: Likewise. <#:phases>{qualify-paths}: Substitute path for ‘/bin/cp’. {pre-check}: Don't skip httpd-unix.t test. Remove unnecessary path substitutions for “env” and “/bin/sh”. {check}: Replace with custom version that launches the tests under tini. [native-inputs]: Add tini. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
43 lines
1.4 KiB
Diff
43 lines
1.4 KiB
Diff
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 ($@)";
|