Blame t/00-report-prereqs.t

Packit e6feea
#!perl
Packit e6feea
Packit e6feea
use strict;
Packit e6feea
use warnings;
Packit e6feea
Packit e6feea
use Test::More tests => 1;
Packit e6feea
Packit e6feea
use ExtUtils::MakeMaker;
Packit e6feea
use File::Spec::Functions;
Packit e6feea
use List::Util qw/max/;
Packit e6feea
Packit e6feea
my @modules = qw(
Packit e6feea
  Capture::Tiny
Packit e6feea
  Carp
Packit e6feea
  Cwd
Packit e6feea
  ExtUtils::MakeMaker
Packit e6feea
  File::Spec
Packit e6feea
  File::Spec::Functions
Packit e6feea
  File::Temp
Packit e6feea
  IO::Handle
Packit e6feea
  IPC::Open3
Packit e6feea
  List::Util
Packit e6feea
  Test::More
Packit e6feea
  constant
Packit e6feea
  lib
Packit e6feea
  perl
Packit e6feea
  strict
Packit e6feea
  warnings
Packit e6feea
);
Packit e6feea
Packit e6feea
# replace modules with dynamic results from MYMETA.json if we can
Packit e6feea
# (hide CPAN::Meta from prereq scanner)
Packit e6feea
my $cpan_meta = "CPAN::Meta";
Packit e6feea
if ( -f "MYMETA.json" && eval "require $cpan_meta" ) { ## no critic
Packit e6feea
  if ( my $meta = eval { CPAN::Meta->load_file("MYMETA.json") } ) {
Packit e6feea
    my $prereqs = $meta->prereqs;
Packit e6feea
    delete $prereqs->{develop};
Packit e6feea
    my %uniq = map {$_ => 1} map { keys %$_ } map { values %$_ } values %$prereqs;
Packit e6feea
    $uniq{$_} = 1 for @modules; # don't lose any static ones
Packit e6feea
    @modules = sort keys %uniq;
Packit e6feea
  }
Packit e6feea
}
Packit e6feea
Packit e6feea
my @reports = [qw/Version Module/];
Packit e6feea
Packit e6feea
for my $mod ( @modules ) {
Packit e6feea
  next if $mod eq 'perl';
Packit e6feea
  my $file = $mod;
Packit e6feea
  $file =~ s{::}{/}g;
Packit e6feea
  $file .= ".pm";
Packit e6feea
  my ($prefix) = grep { -e catfile($_, $file) } @INC;
Packit e6feea
  if ( $prefix ) {
Packit e6feea
    my $ver = MM->parse_version( catfile($prefix, $file) );
Packit e6feea
    $ver = "undef" unless defined $ver; # Newer MM should do this anyway
Packit e6feea
    push @reports, [$ver, $mod];
Packit e6feea
  }
Packit e6feea
  else {
Packit e6feea
    push @reports, ["missing", $mod];
Packit e6feea
  }
Packit e6feea
}
Packit e6feea
Packit e6feea
if ( @reports ) {
Packit e6feea
  my $vl = max map { length $_->[0] } @reports;
Packit e6feea
  my $ml = max map { length $_->[1] } @reports;
Packit e6feea
  splice @reports, 1, 0, ["-" x $vl, "-" x $ml];
Packit e6feea
  diag "Prerequisite Report:\n", map {sprintf("  %*s %*s\n",$vl,$_->[0],-$ml,$_->[1])} @reports;
Packit e6feea
}
Packit e6feea
Packit e6feea
pass;
Packit e6feea
Packit e6feea
# vim: ts=2 sts=2 sw=2 et: