#!perl
use
5.006;
our
@modules
;
if
(
exists
$ENV
{SKIP_COMPILE_TEST}) {
print
"1..0 # Skip compile tests not required\n"
;
exit
;
}
find({
wanted
=> \
&wanted
,
no_chdir
=> 1,
},
"blib"
);
plan
tests
=> (
scalar
(
@modules
));
$| = 1;
my
$counter
= 0;
my
$tempfile
=
"results.dat"
;
for
my
$module
(
@modules
) {
my
$pid
;
if
(
$pid
=
fork
) {
waitpid
(
$pid
, 0);
}
else
{
die
"cannot fork: $!"
unless
defined
$pid
;
my
$isok
= 1;
my
$skip
=
''
;
eval
"use $module ();"
;
if
( $@ ) {
if
($@ =~ /Can't locate (.*\.pm) in/) {
my
$missing
= $1;
diag(
"$module can not locate $missing"
);
$skip
=
"missing module $missing from $module"
;
}
else
{
diag(
"require failed with '$@'\n"
);
$isok
= 0;
}
}
open
(
my
$fh
,
"> $tempfile"
) ||
die
"Could not open $tempfile: $!"
;
print
$fh
"$isok $skip\n"
;
close
(
$fh
);
exit
;
}
if
(
open
(
my
$fh
,
"< $tempfile"
)) {
my
$line
= <
$fh
>;
close
(
$fh
);
if
(
defined
$line
) {
chomp
(
$line
);
my
(
$status
,
$skip
) =
split
(/\s+/,
$line
, 2);
SKIP: {
skip(
$skip
, 1)
if
$skip
;
ok(
$status
,
"Load $module"
);
}
}
else
{
ok( 0,
"Could not get results from loading module $module"
);
}
}
else
{
ok(0,
"Could not get results from loading module $module"
);
}
unlink
(
$tempfile
);
}
sub
wanted {
my
$pm
=
$_
;
return
unless
$pm
=~ /\.pm$/;
$pm
=~ s|^blib/lib/||;
$pm
=~ s|/|::|g;
$pm
=~ s/\.pm$//;
push
(
@modules
,
$pm
);
}