Revision bd0bd7a0
Von Moritz Bunkus vor fast 8 Jahren hinzugefügt
t/001compile.t | ||
---|---|---|
25 | 25 |
###Compilation### |
26 | 26 |
|
27 | 27 |
use strict; |
28 |
use threads; |
|
28 | 29 |
|
29 | 30 |
use lib 't'; |
30 | 31 |
|
31 | 32 |
use Support::Files; |
33 |
use Sys::CPU; |
|
34 |
use Thread::Pool::Simple; |
|
32 | 35 |
|
33 | 36 |
use Test::More tests => scalar(@Support::Files::testitems); |
34 | 37 |
|
... | ... | |
61 | 64 |
|
62 | 65 |
# Test the scripts by compiling them |
63 | 66 |
|
64 |
foreach my $file (@testitems) { |
|
65 |
$file =~ s/\s.*$//; # nuke everything after the first space (#comment) |
|
66 |
next if !$file; # skip null entries |
|
67 |
my @to_compile; |
|
68 |
|
|
69 |
sub test_compile_file { |
|
70 |
my ($file, $T) = @{ $_[0] }; |
|
71 |
|
|
67 | 72 |
|
68 |
open (FILE,$file); |
|
69 |
my $bang = <FILE>; |
|
70 |
close (FILE); |
|
71 |
my $T = ""; |
|
72 |
$T = "T" if $bang =~ m/#!\S*perl\s+-.*T/; |
|
73 |
my $command = "$perlapp -w -c$T -Imodules/fallback -Imodules/override -It -MSupport::CanonialGlobals $file 2>&1"; |
|
74 |
my $loginfo=`$command`; |
|
73 | 75 |
|
74 |
if (-l $file) { |
|
75 |
ok(1, "$file is a symlink"); |
|
76 |
if ($loginfo =~ /syntax ok$/im) { |
|
77 |
if ($loginfo ne "$file syntax OK\n") { |
|
78 |
ok(0,$file." --WARNING"); |
|
79 |
print $fh $loginfo; |
|
76 | 80 |
} else { |
77 |
my $command = "$perlapp -w -c$T -Imodules/fallback -Imodules/override -It -MSupport::CanonialGlobals $file 2>&1"; |
|
78 |
my $loginfo=`$command`; |
|
79 |
|
|
80 |
if ($loginfo =~ /syntax ok$/im) { |
|
81 |
if ($loginfo ne "$file syntax OK\n") { |
|
82 |
ok(0,$file." --WARNING"); |
|
83 |
print $fh $loginfo; |
|
84 |
} else { |
|
85 |
ok(1,$file); |
|
86 |
} |
|
87 |
} else { |
|
88 |
ok(0,$file." --ERROR"); |
|
89 |
print $fh $loginfo; |
|
90 |
} |
|
81 |
ok(1,$file); |
|
91 | 82 |
} |
83 |
} else { |
|
84 |
ok(0,$file." --ERROR"); |
|
85 |
print $fh $loginfo; |
|
86 |
} |
|
92 | 87 |
} |
93 | 88 |
|
89 |
foreach my $file (@testitems) { |
|
90 |
$file =~ s/\s.*$//; # nuke everything after the first space (#comment) |
|
91 |
next if !$file; # skip null entries |
|
92 |
|
|
93 |
open (FILE,$file); |
|
94 |
my $bang = <FILE>; |
|
95 |
close (FILE); |
|
96 |
my $T = ""; |
|
97 |
$T = "T" if $bang =~ m/#!\S*perl\s+-.*T/; |
|
98 |
|
|
99 |
if (-l $file) { |
|
100 |
ok(1, "$file is a symlink"); |
|
101 |
} else { |
|
102 |
push @to_compile, [ $file, $T ]; |
|
103 |
} |
|
104 |
} |
|
105 |
|
|
106 |
my $pool = Thread::Pool::Simple->new( |
|
107 |
min => 2, |
|
108 |
max => Sys::CPU::cpu_count() + 1, |
|
109 |
do => [ \&test_compile_file ], |
|
110 |
passid => 0, |
|
111 |
); |
|
112 |
|
|
113 |
$pool->add($_) for @to_compile; |
|
114 |
|
|
115 |
$pool->join; |
|
116 |
|
|
94 | 117 |
exit 0; |
Auch abrufbar als: Unified diff
Tests: 001compile.t parallelisiert