App-Prove-Plugin-TraceUse
view release on metacpan or search on metacpan
lib/App/Prove/Plugin/TraceUse.pm view on Meta::CPAN
my $v = $dep_hash->{$mod};
if ( not $v ) {
print "# ";
print colored ['bold red'], sprintf "%-${n}s => '%s',\n", "'".$_->[0]."'", $_->[1];
$hash_fails = 1;
}
elsif ( $v and qv($v) < qv($ver) ) {
print "# ";
print colored ['bold yellow'], sprintf "%-${n}s => '%s',\n", "'".$_->[0]."'", $_->[1];
$hash_fails = 1;
}
}
if ( not $hash_fails ) {
print "# - dependencies are ok\n";
}
return not $hash_fails;
};
my $dependencies_are_good = 1;
if ( $makefile_requirements ) {
print "# Makefile.PL:\n";
my $ok = $present_file_dep->($makefile_requirements);
$dependencies_are_good &&= $ok;
}
if ( $build_requirements ) {
print "# Build.PL:\n";
my $ok = $present_file_dep->($build_requirements);
$dependencies_are_good &&= $ok;
}
if ( not $dependencies_are_good and 0 ) {
print "# List of dependencies found during testing:\n";
for ( @d ) {
printf "# %-${n}s => '%s',\n", "'".$_->[0]."'", $_->[1];
}
}
}
sub new {
my $self = shift;
my $tf = File::Temp->new;
my $fn = "$tf";
## add the traceuse option
$_[0]->{switches} = ["-d:TraceUse=hidecore,output:$fn"];
my $obj = $self->SUPER::new(@_);
$obj->{collected_dependencies} = [];
my $trace_use_sub = sub {
my $dt = read_file( $fn );
my $p = App::Prove::Plugin::TraceUse::_parse_traceuse($dt);
my $deps = App::Prove::Plugin::TraceUse::_find_dependent_modules($p);
push @{ $obj->{collected_dependencies} }, @$deps;
};
$obj->callback( "after_test", $trace_use_sub );
my $collected_dependencies = sub {
$obj->_uniquify_dependencies;
$obj->present_dependencies;
};
$obj->callback( "after_runtests", $collected_dependencies );
return $obj;
}
}
sub load {
my( $class, $p ) = @_;
my $app = $p->{app_prove};
if ( defined($app->harness) and $app->harness ne "TAP::Harness" ) {
croak "TraceUse plugin is only compatible wtih TAP::Harness";
}
$app->{harness_class} = "TAP::Harness::FOO";
1;
}
1; # Magic true value required at end of module
__END__
=encoding utf8
=head1 NAME
App::Prove::Plugin::TraceUse - Report all modules used during testing
and check if they are listed as dependencies in Makefile.PL and
Build.PL
=head1 VERSION
This document describes App::Prove::Plugin::TraceUse version 1.0.3
( run in 0.699 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )