our
$VERSION
=
'1.302208'
;
our
@EXPORT_OK
=
qw{
upgrade_suggested
upgrade_required
known_broken
}
;
BEGIN {
require
Exporter;
our
@ISA
=
qw(Exporter)
}
sub
upgrade_suggested {
return
(
'Test::Exception'
=>
'0.42'
,
'Test::FITesque'
=>
'0.04'
,
'Test::Module::Used'
=>
'0.2.5'
,
'Test::Moose::More'
=>
'0.025'
,
);
}
sub
upgrade_required {
return
(
'Test::Builder::Clutch'
=>
'0.07'
,
'Test::Dist::VersionSync'
=>
'1.1.4'
,
'Test::Modern'
=>
'0.012'
,
'Test::SharedFork'
=>
'0.34'
,
'Test::Alien'
=>
'0.04'
,
'Test::UseAllModules'
=>
'0.14'
,
'Test::More::Prefix'
=>
'0.005'
,
'Test2::Tools::EventDumper'
=> 0.000007,
'Test2::Harness'
=> 0.000013,
'Test::DBIx::Class::Schema'
=>
'1.0.9'
,
'Test::Clustericious::Cluster'
=>
'0.30'
,
);
}
sub
known_broken {
return
(
'Net::BitTorrent'
=>
'0.052'
,
'Test::Able'
=>
'0.11'
,
'Test::Aggregate'
=>
'0.373'
,
'Test::Flatten'
=>
'0.11'
,
'Test::Group'
=>
'0.20'
,
'Test::ParallelSubtest'
=>
'0.05'
,
'Test::Pretty'
=>
'0.32'
,
'Test::Wrapper'
=>
'0.3.0'
,
'Log::Dispatch::Config::TestLog'
=>
'0.02'
,
);
}
sub
report {
my
$class
=
shift
;
my
(
$require
) =
@_
;
my
%suggest
= __PACKAGE__->upgrade_suggested();
my
%required
= __PACKAGE__->upgrade_required();
my
%broken
= __PACKAGE__->known_broken();
my
@warn
;
for
my
$mod
(
keys
%suggest
) {
my
$file
= pkg_to_file(
$mod
);
next
unless
$INC
{
$file
} || (
$require
&&
eval
{
require
$file
; 1 });
my
$want
=
$suggest
{
$mod
};
next
if
eval
{
$mod
->VERSION(
$want
); 1 };
my
$error
= $@;
chomp
$error
;
push
@warn
=>
" * Module '$mod' is outdated, we recommend updating above $want. error was: '$error'; INC is $INC{$file}"
;
}
for
my
$mod
(
keys
%required
) {
my
$file
= pkg_to_file(
$mod
);
next
unless
$INC
{
$file
} || (
$require
&&
eval
{
require
$file
; 1 });
my
$want
=
$required
{
$mod
};
next
if
eval
{
$mod
->VERSION(
$want
); 1 };
push
@warn
=>
" * Module '$mod' is outdated and known to be broken, please update to $want or higher."
;
}
for
my
$mod
(
keys
%broken
) {
my
$file
= pkg_to_file(
$mod
);
next
unless
$INC
{
$file
} || (
$require
&&
eval
{
require
$file
; 1 });
my
$tested
=
$broken
{
$mod
};
push
@warn
=>
" * Module '$mod' is known to be broken in version $tested and below, newer versions have not been tested. You have: "
.
$mod
->VERSION;
}
return
@warn
;
}
1;