From fa12f67870476d73eaabf4d9a531c05537c83229 Mon Sep 17 00:00:00 2001 From: Christopher Zimmermann Date: Sat, 11 Jun 2016 14:47:17 +0200 Subject: [PATCH] Fix testsuite on OpenBSD OpenBSD perl forks for glob(). Therefore attach SIGCHLD handler as late as possible. --- testcases/lib/StartXServer.pm | 18 +++++++++--------- testcases/t/180-fd-leaks.t | 5 +++++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/testcases/lib/StartXServer.pm b/testcases/lib/StartXServer.pm index 86a37d92..d3042c07 100644 --- a/testcases/lib/StartXServer.pm +++ b/testcases/lib/StartXServer.pm @@ -69,15 +69,6 @@ sub start_xserver { my @displays = (); my @childpids = (); - $SIG{CHLD} = sub { - my $child = waitpid -1, POSIX::WNOHANG; - @pids = grep { $_ != $child } @pids; - return unless @pids == 0; - print STDERR "All X server processes died.\n"; - print STDERR "Use ./complete-run.pl --parallel 1 --keep-xserver-output\n"; - exit 1; - }; - # Yeah, I know it’s non-standard, but Perl’s POSIX module doesn’t have # _SC_NPROCESSORS_CONF. my $num_cores; @@ -101,6 +92,15 @@ sub start_xserver { say "Starting $parallel Xephyr instances, starting at :$displaynum..."; + $SIG{CHLD} = sub { + my $child = waitpid -1, POSIX::WNOHANG; + @pids = grep { $_ != $child } @pids; + return unless @pids == 0; + print STDERR "All X server processes died.\n"; + print STDERR "Use ./complete-run.pl --parallel 1 --keep-xserver-output\n"; + exit 1; + }; + my @sockets_waiting; for (1 .. $parallel) { my $socket = fork_xserver($keep_xserver_output, $displaynum, diff --git a/testcases/t/180-fd-leaks.t b/testcases/t/180-fd-leaks.t index 454bfe7d..16272d31 100644 --- a/testcases/t/180-fd-leaks.t +++ b/testcases/t/180-fd-leaks.t @@ -20,6 +20,9 @@ use i3test; use POSIX qw(mkfifo); use File::Temp qw(:POSIX tempfile); +SKIP: { +skip "Procfs not available on $^O", 1 if $^O eq 'openbsd'; + my $i3 = i3(get_socket_path()); my $tmp = tmpnam(); @@ -59,4 +62,6 @@ for my $fd (keys %fds) { is(scalar keys %fds, 0, 'No file descriptors leaked'); +} + done_testing;