App-CPAN-Mini-Visit
view release on metacpan or search on metacpan
t/00-report-prereqs.t view on Meta::CPAN
# hide optional CPAN::Meta modules from prereq scanner
# and check if they are available
my $cpan_meta = "CPAN::Meta";
my $cpan_meta_req = "CPAN::Meta::Requirements";
my $HAS_CPAN_META = eval "require $cpan_meta"; ## no critic
my $HAS_CPAN_META_REQ = eval "require $cpan_meta_req; $cpan_meta_req->VERSION('2.120900')";
# Verify requirements?
my $DO_VERIFY_PREREQS = 1;
sub _merge_requires {
my ($collector, $prereqs) = @_;
for my $phase ( qw/configure build test runtime develop/ ) {
next unless exists $prereqs->{$phase};
if ( my $req = $prereqs->{$phase}{'requires'} ) {
my $cmr = CPAN::Meta::Requirements->from_string_hash( $req );
$collector->add_requirements( $cmr );
}
}
}
my %include = map {; $_ => 1 } qw(
);
my %exclude = map {; $_ => 1 } qw(
);
# Add static prereqs to the included modules list
my $static_prereqs = do { my $x = {
'configure' => {
'requires' => {
'ExtUtils::MakeMaker' => '6.17'
}
},
'develop' => {
'requires' => {
'Dist::Zilla' => '5.013',
'Dist::Zilla::Plugin::Encoding' => '0',
'Dist::Zilla::PluginBundle::DAGOLDEN' => '0.060',
'File::Spec' => '0',
'File::Temp' => '0',
'IO::Handle' => '0',
'IPC::Open3' => '0',
'Pod::Coverage::TrustPod' => '0',
'Test::CPAN::Meta' => '0',
'Test::More' => '0',
'Test::Pod' => '1.41',
'Test::Pod::Coverage' => '1.08'
}
},
'runtime' => {
'requires' => {
'Archive::Extract' => '0.28',
'CPAN::Mini' => '0.572',
'Exception::Class::TryCatch' => '1.12',
'File::Basename' => '0',
'File::Find' => '0',
'File::pushd' => '0',
'Getopt::Lucid' => '0.16',
'Path::Class' => '0',
'Pod::Usage' => '1.35',
'perl' => '5.006',
'strict' => '0',
'warnings' => '0'
}
},
'test' => {
'recommends' => {
'CPAN::Meta' => '0',
'CPAN::Meta::Requirements' => '2.120900'
},
'requires' => {
'CPAN::Checksums' => '0',
'ExtUtils::MakeMaker' => '0',
'File::Spec::Functions' => '0',
'File::Temp' => '0.20',
'IO::CaptureOutput' => '1.0801',
'IO::File' => '0',
'List::Util' => '0',
'Test::More' => '0.62',
'version' => '0'
}
}
};
$x;
};
delete $static_prereqs->{develop} if not $ENV{AUTHOR_TESTING};
$include{$_} = 1 for map { keys %$_ } map { values %$_ } values %$static_prereqs;
# Merge requirements for major phases (if we can)
my $all_requires;
if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META_REQ ) {
$all_requires = $cpan_meta_req->new;
_merge_requires($all_requires, $static_prereqs);
}
# Add dynamic prereqs to the included modules list (if we can)
my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
if ( $source && $HAS_CPAN_META ) {
if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
my $dynamic_prereqs = $meta->prereqs;
delete $dynamic_prereqs->{develop} if not $ENV{AUTHOR_TESTING};
$include{$_} = 1 for map { keys %$_ } map { values %$_ } values %$dynamic_prereqs;
if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META_REQ ) {
_merge_requires($all_requires, $dynamic_prereqs);
}
}
}
else {
$source = 'static metadata';
}
my @modules = sort grep { ! $exclude{$_} } keys %include;
my @reports = [qw/Version Module/];
my @dep_errors;
my $req_hash = defined($all_requires) ? $all_requires->as_string_hash : {};
( run in 1.412 second using v1.01-cache-2.11-cpan-97f6503c9c8 )