X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=t%2F001compile.t;h=044d6040814d1bfd9393c07ad2b71cbdefb794bc;hb=65604fea85234a5ae3e787f7cafd81ece6b8621d;hp=1053a6b07e607a716ac12db4316548ce2c59e95b;hpb=1d91e75c53e7da5bf2c1b334f5aeecf241dc5ec4;p=kivitendo-erp.git diff --git a/t/001compile.t b/t/001compile.t index 1053a6b07..044d60408 100644 --- a/t/001compile.t +++ b/t/001compile.t @@ -25,18 +25,19 @@ ###Compilation### use strict; +use threads; use lib 't'; -use lib '../modules/override'; -use lib '../modules/fallback'; use Support::Files; +use Sys::CPU; +use Thread::Pool::Simple; use Test::More tests => scalar(@Support::Files::testitems); # Need this to get the available driver information -use DBI; -my @DBI_drivers = DBI->available_drivers; +#use DBI; +#my @DBI_drivers = DBI->available_drivers; # Bugzilla requires Perl 5.8.0 now. Checksetup will tell you this if you run it, but # it tests it in a polite/passive way that won't make it fail at compile time. We'll @@ -63,46 +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; - # Skip mod_perl.pl in all cases. It doesn't compile correctly from the command line. - if ($file eq 'mod_perl.pl') { - ok(1, "Skipping mod_perl.pl"); - next; - } +sub test_compile_file { + my ($file, $T) = @{ $_[0] }; - # Check that we have a DBI module to support the DB, if this is a database - # module (but not Schema) - if ($file =~ m#Bugzilla/DB/([^/]+)\.pm$# && $file ne "Bugzilla/DB/Schema.pm") { - if (!grep(lc($_) =~ /$1/i, @DBI_drivers)) { - ok(1,$file." - Skipping, as the DBD module not installed"); - next; - } - } - open (FILE,$file); - my $bang = ; - close (FILE); - my $T = ""; - if ($bang =~ m/#!\S*perl\s+-.*T/) { - $T = "T"; - } - my $command = "$perlapp -c$T -I modules/fallback -I modules/override $file 2>&1"; - my $loginfo=`$command`; - #print '@@'.$loginfo.'##'; - if ($loginfo =~ /syntax ok$/im) { - if ($loginfo ne "$file syntax OK\n") { - ok(0,$file." --WARNING"); - print $fh $loginfo; - } else { - ok(1,$file); - } + my $command = "$perlapp -w -c$T -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(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;