X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=testcases%2Flib%2FStartXServer.pm;h=434ca238f6dfc36370a92b5c2f265e68405ee950;hb=aa0b1f599f25cfe858ebbc7fa80d459bcdb2ae02;hp=032f58c6033a9da37103ca60fdaddadb7cc05fe6;hpb=db62b5a4df3d7ee7ac9363e4c430ea0155abba25;p=i3%2Fi3 diff --git a/testcases/lib/StartXServer.pm b/testcases/lib/StartXServer.pm index 032f58c6..434ca238 100644 --- a/testcases/lib/StartXServer.pm +++ b/testcases/lib/StartXServer.pm @@ -5,6 +5,7 @@ use strict; use warnings; use Exporter 'import'; use Time::HiRes qw(sleep); +use i3test::Util qw(slurp); use v5.10; our @EXPORT = qw(start_xserver); @@ -12,13 +13,6 @@ our @EXPORT = qw(start_xserver); my @pids; my $x_socketpath = '/tmp/.X11-unix/X'; -# reads in a whole file -sub slurp { - open(my $fh, '<', shift) or return ''; - local $/; - <$fh>; -} - # forks an X server process sub fork_xserver { my $keep_xserver_output = shift; @@ -63,7 +57,7 @@ sub wait_for_x { =head2 start_xserver($parallel) Starts C<$parallel> (or number of cores * 2 if undef) Xephyr processes (see -http://www.freedesktop.org/wiki/Software/Xephyr/) and returns two arrayrefs: a +https://www.freedesktop.org/wiki/Software/Xephyr/) and returns two arrayrefs: a list of X11 display numbers to the Xephyr processes and a list of PIDs of the processes. @@ -75,19 +69,13 @@ 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 $cpuinfo = slurp('/proc/cpuinfo'); - my $num_cores = scalar grep { /model name/ } split("\n", $cpuinfo); + my $num_cores; + if (-e '/proc/cpuinfo') { + my $cpuinfo = slurp('/proc/cpuinfo'); + $num_cores = scalar grep { /model name/ } split("\n", $cpuinfo); + } # If /proc/cpuinfo does not exist, we fall back to 2 cores. $num_cores ||= 2; @@ -104,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,