App-Midgen
view release on metacpan or search on metacpan
lib/App/Midgen/Role/TestRequires.pm view on Meta::CPAN
package App::Midgen::Role::TestRequires;
use constant {BLANK => q{ }, NONE => q{}, TWO => 2, THREE => 3,};
use Moo::Role;
requires
qw( ppi_document develop debug verbose format xtest _process_found_modules meta2 );
use PPI;
use Try::Tiny;
use Data::Printer {caller_info => 1,};
# Load time and dependencies negate execution time
# use namespace::clean -except => 'meta';
our $VERSION = '0.34';
$VERSION = eval $VERSION; ## no critic
#######
# composed method - xtests_test_requires
#######
sub xtests_test_requires {
my $self = shift;
my $phase_relationship = shift || NONE;
my @modules;
my @version_strings;
# PPI::Statement::Include
# PPI::Token::Word 'use'
# PPI::Token::Whitespace ' '
# PPI::Token::Word 'Test::Requires'
# PPI::Token::Whitespace ' '
# PPI::Structure::Constructor { ... }
# PPI::Token::Whitespace ' '
# PPI::Statement
# PPI::Token::Quote::Single ''Test::Pod''
# PPI::Token::Whitespace ' '
# PPI::Token::Operator '=>'
# PPI::Token::Whitespace ' '
# PPI::Token::Number::Float '1.46'
# PPI::Token::Whitespace ' '
# PPI::Token::Structure ';'
try {
my @chunks
= @{$self->ppi_document->find('PPI::Statement::Include') || []};
foreach my $hunk (@chunks) {
# test for use
if (
$hunk->find(
sub {
$_[1]->isa('PPI::Token::Word')
and $_[1]->content =~ m{\A(?:use)\z};
}
)
)
{
# test for Test::Requires
if (
$hunk->find(
sub {
$_[1]->isa('PPI::Token::Word')
and $_[1]->content =~ m{\A(?:Test::Requires)\z};
}
)
( run in 1.171 second using v1.01-cache-2.11-cpan-5fbc6bb55f2 )