From bd0bd7a0380c750eda91d0467e9e4af414273d00 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Fri, 10 Feb 2017 16:48:14 +0100 Subject: [PATCH] Tests: 001compile.t parallelisiert --- SL/InstallationCheck.pm | 2 ++ t/001compile.t | 71 +++++++++++++++++++++++++++-------------- 2 files changed, 49 insertions(+), 24 deletions(-) diff --git a/SL/InstallationCheck.pm b/SL/InstallationCheck.pm index 92f575c33..297b7ad87 100644 --- a/SL/InstallationCheck.pm +++ b/SL/InstallationCheck.pm @@ -72,9 +72,11 @@ BEGIN { { name => "LWP::Simple", url => "http://search.cpan.org/~gaas/", debian => 'libwww-perl', dist_name => 'libwww-perl' }, { name => "Moose::Role", url => "http://search.cpan.org/~doy/", debian => 'libmoose-perl' }, { name => "Perl::Tags", url => "http://search.cpan.org/~osfameron/", debian => 'libperl-tags-perl' }, + { name => "Sys::CPU", url => "http://search.cpan.org/~mkoderer/", debian => 'libsys-cpu-perl' }, { name => "Test::Deep", url => "http://search.cpan.org/~rjbs/", debian => 'libtest-deep-perl' }, { name => "Test::Exception", url => "http://search.cpan.org/~adie/", debian => 'libtest-exception-perl' }, { name => "Test::Output", url => "http://search.cpan.org/~bdfoy/", debian => 'libtest-output-perl' }, + { name => "Thread::Pool::Simple", url => "http://search.cpan.org/~jwu/", debian => 'libthread-pool-simple-perl' }, { name => "URI::Find", url => "http://search.cpan.org/~mschwern/", debian => 'liburi-find-perl' }, { name => "GD", version => '2.00', url => "http://search.cpan.org/~lds/", debian => 'libgd-perl' }, { name => "Rose::DB::Object", version => 0.809, url => "http://search.cpan.org/~jsiracusa/", debian => 'librose-db-object-perl' }, diff --git a/t/001compile.t b/t/001compile.t index 5289a2d28..0d1657b19 100644 --- a/t/001compile.t +++ b/t/001compile.t @@ -25,10 +25,13 @@ ###Compilation### use strict; +use threads; use lib 't'; use Support::Files; +use Sys::CPU; +use Thread::Pool::Simple; use Test::More tests => scalar(@Support::Files::testitems); @@ -61,34 +64,54 @@ my $perlapp = "\"$^X\""; # Test the scripts by compiling them -foreach my $file (@testitems) { - $file =~ s/\s.*$//; # nuke everything after the first space (#comment) - next if !$file; # skip null entries +my @to_compile; + +sub test_compile_file { + my ($file, $T) = @{ $_[0] }; + - open (FILE,$file); - my $bang = ; - close (FILE); - my $T = ""; - $T = "T" if $bang =~ m/#!\S*perl\s+-.*T/; + my $command = "$perlapp -w -c$T -Imodules/fallback -Imodules/override -It -MSupport::CanonialGlobals $file 2>&1"; + my $loginfo=`$command`; - if (-l $file) { - ok(1, "$file is a symlink"); + if ($loginfo =~ /syntax ok$/im) { + if ($loginfo ne "$file syntax OK\n") { + ok(0,$file." --WARNING"); + print $fh $loginfo; } else { - my $command = "$perlapp -w -c$T -Imodules/fallback -Imodules/override -It -MSupport::CanonialGlobals $file 2>&1"; - my $loginfo=`$command`; - - if ($loginfo =~ /syntax ok$/im) { - if ($loginfo ne "$file syntax OK\n") { - ok(0,$file." --WARNING"); - print $fh $loginfo; - } else { - ok(1,$file); - } - } else { - ok(0,$file." --ERROR"); - print $fh $loginfo; - } + ok(1,$file); } + } else { + ok(0,$file." --ERROR"); + print $fh $loginfo; + } } +foreach my $file (@testitems) { + $file =~ s/\s.*$//; # nuke everything after the first space (#comment) + next if !$file; # skip null entries + + open (FILE,$file); + my $bang = ; + close (FILE); + my $T = ""; + $T = "T" if $bang =~ m/#!\S*perl\s+-.*T/; + + if (-l $file) { + ok(1, "$file is a symlink"); + } else { + push @to_compile, [ $file, $T ]; + } +} + +my $pool = Thread::Pool::Simple->new( + min => 2, + max => Sys::CPU::cpu_count() + 1, + do => [ \&test_compile_file ], + passid => 0, +); + +$pool->add($_) for @to_compile; + +$pool->join; + exit 0; -- 2.20.1