#!perl
my
@modules
;
find(
sub
{
return
if
$File::Find::name
!~ /\.pm\z/;
my
$found
=
$File::Find::name
;
$found
=~ s{^lib/}{};
$found
=~ s{[/\\]}{::}g;
$found
=~ s/\.pm$//;
push
@modules
,
$found
;
},
'lib'
,
);
sub
_find_scripts {
my
$dir
=
shift
@_
;
my
@found_scripts
= ();
find(
sub
{
return
unless
-f;
my
$found
=
$File::Find::name
;
open
my
$FH
,
'<'
,
$_
or
do
{
note(
"Unable to open $found in ( $! ), skipping"
);
return
;
};
my
$shebang
= <
$FH
>;
return
unless
$shebang
=~ /^
push
@found_scripts
,
$found
;
},
$dir
,
);
return
@found_scripts
;
}
my
@scripts
;
do
{
push
@scripts
, _find_scripts(
$_
)
if
-d
$_
}
for
qw{ bin script scripts }
;
my
$plan
=
scalar
(
@modules
) +
scalar
(
@scripts
);
$plan
? (plan
tests
=>
$plan
) : (plan
skip_all
=>
"no tests to run"
);
{
like(
qx{ $^X -Ilib -e "require $_; print '$_ ok'" }
,
qr/^\s*$_ ok/
s,
"$_ loaded ok"
)
for
sort
@modules
;
SKIP: {
eval
"use Test::Script 1.05; 1;"
;
skip
"Test::Script needed to test script compilation"
,
scalar
(
@scripts
)
if
$@;
foreach
my
$file
(
@scripts
) {
my
$script
=
$file
;
$script
=~ s!.*/!!;
script_compiles(
$file
,
"$script script compiles"
);
}
}
}