Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision bd0bd7a0

Von Moritz Bunkus vor mehr als 8 Jahren hinzugefügt

  • ID bd0bd7a0380c750eda91d0467e9e4af414273d00
  • Vorgänger 1181d2b6
  • Nachfolger 19f08831

Tests: 001compile.t parallelisiert

Unterschiede anzeigen:

t/001compile.t
###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);
......
# 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 = <FILE>;
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 = <FILE>;
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;

Auch abrufbar als: Unified diff