Dist-Zilla-Plugin-DynamicPrereqs
view release on metacpan or search on metacpan
t/18-subs.t view on Meta::CPAN
use strict;
use warnings;
use Test::More 0.88;
use if $ENV{AUTHOR_TESTING}, 'Test::Warnings';
use Path::Tiny;
use PadWalker 'closed_over';
use Module::Runtime qw(use_module module_notional_filename);
use ExtUtils::MakeMaker;
use Test::Deep;
use Dist::Zilla::Plugin::DynamicPrereqs;
use Test::File::ShareDir
-share => { -module => { 'Dist::Zilla::Plugin::DynamicPrereqs' => 'share/DynamicPrereqs' } };
# since we change directories during the build process, this must be absolute
use lib path('t/lib')->absolute->stringify;
my $sub_prereqs = closed_over(\&Dist::Zilla::Plugin::DynamicPrereqs::register_prereqs)->{'%sub_prereqs'};
my %loaded_subs;
sub load_sub {
foreach my $sub (Dist::Zilla::Plugin::DynamicPrereqs->_all_required_subs_for(@_)) {
next if exists $loaded_subs{$sub};
foreach my $prereq (keys %{$sub_prereqs->{$sub}}) {
note "loading $prereq $sub_prereqs->{$sub}{$prereq}";
use_module($prereq, $sub_prereqs->{$sub}{$prereq});
}
my $filename = path(File::ShareDir::module_dir('Dist::Zilla::Plugin::DynamicPrereqs'), 'include_subs')->child($sub);
note "loading $filename";
do $filename;
die $@ if $@;
++$loaded_subs{$sub};
}
}
{
load_sub('has_module');
{
# pick something we know is available, but not something we have loaded
my $module = 'Inlined::Module';
ok(!exists($INC{module_notional_filename($module)}), "$module has not already been loaded");
my $got_version;
ok($got_version = has_module($module), "$module is installed; returned something true ($got_version)");
is(has_module($module, '0'), 1, "$module is installed at least version 0");
ok(!exists($INC{module_notional_filename($module)}), "$module has not been loaded by has_module()");
require Inlined::Module;
is($got_version, MM->parse_version($INC{'Inlined/Module.pm'}), 'has_version returned $Inlined::Module::VERSION');
}
{
my $module = 'Bloop::Blorp';
ok(!exists($INC{module_notional_filename($module)}), "$module has not already been loaded");
is(has_module($module), undef, "$module is not installed");
ok(!exists($INC{module_notional_filename($module)}), "$module has not been loaded by has_module()");
}
{
my $module = 'Dist::Zilla::Plugin::DynamicPrereqs';
ok(exists($INC{module_notional_filename($module)}), "$module has already been loaded");
is(has_module($module), $module->VERSION, "$module is installed; returned its version");
is(has_module($module, '0'), 1, "$module is installed at least version 0");
( run in 2.961 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )