181 lines
4.7 KiB
Perl
181 lines
4.7 KiB
Perl
package Test2::API::Breakage;
|
|
use strict;
|
|
use warnings;
|
|
|
|
our $VERSION = '1.302175';
|
|
|
|
|
|
use Test2::Util qw/pkg_to_file/;
|
|
|
|
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',
|
|
);
|
|
}
|
|
|
|
# Not reportable:
|
|
# Device::Chip => 0.07 - Tests will not pass, but not broken if already installed, also no fixed version we can upgrade to.
|
|
|
|
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 recommed 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;
|
|
|
|
__END__
|
|
|
|
|
|
=pod
|
|
|
|
=encoding UTF-8
|
|
|
|
=head1 NAME
|
|
|
|
Test2::API::Breakage - What breaks at what version
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
This module provides lists of modules that are broken, or have been broken in
|
|
the past, when upgrading L<Test::Builder> to use L<Test2>.
|
|
|
|
=head1 FUNCTIONS
|
|
|
|
These can be imported, or called as methods on the class.
|
|
|
|
=over 4
|
|
|
|
=item %mod_ver = upgrade_suggested()
|
|
|
|
=item %mod_ver = Test2::API::Breakage->upgrade_suggested()
|
|
|
|
This returns key/value pairs. The key is the module name, the value is the
|
|
version number. If the installed version of the module is at or below the
|
|
specified one then an upgrade would be a good idea, but not strictly necessary.
|
|
|
|
=item %mod_ver = upgrade_required()
|
|
|
|
=item %mod_ver = Test2::API::Breakage->upgrade_required()
|
|
|
|
This returns key/value pairs. The key is the module name, the value is the
|
|
version number. If the installed version of the module is at or below the
|
|
specified one then an upgrade is required for the module to work properly.
|
|
|
|
=item %mod_ver = known_broken()
|
|
|
|
=item %mod_ver = Test2::API::Breakage->known_broken()
|
|
|
|
This returns key/value pairs. The key is the module name, the value is the
|
|
version number. If the installed version of the module is at or below the
|
|
specified one then the module will not work. A newer version may work, but is
|
|
not tested or verified.
|
|
|
|
=back
|
|
|
|
=head1 SOURCE
|
|
|
|
The source code repository for Test2 can be found at
|
|
F<http://github.com/Test-More/test-more/>.
|
|
|
|
=head1 MAINTAINERS
|
|
|
|
=over 4
|
|
|
|
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
|
|
|
=back
|
|
|
|
=head1 AUTHORS
|
|
|
|
=over 4
|
|
|
|
=item Chad Granum E<lt>exodist@cpan.orgE<gt>
|
|
|
|
=back
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright 2019 Chad Granum E<lt>exodist@cpan.orgE<gt>.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the same terms as Perl itself.
|
|
|
|
See F<http://dev.perl.org/licenses/>
|
|
|
|
=cut
|