Dist-Zilla-Plugin-DynamicPrereqs

 view release on metacpan or  search on metacpan

t/11-include-sub.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More 0.88;
use if $ENV{AUTHOR_TESTING}, 'Test::Warnings';
use Test::DZil;
use Test::Fatal;
use Path::Tiny;
use PadWalker 'closed_over';
use Test::Deep;
use Test::File::ShareDir ();

my $tzil = Builder->from_config(
    { dist_root => 'does-not-exist' },
    {
        add_files => {
            path(qw(source dist.ini)) => simple_ini(
                [ GatherDir => ],
                [ MakeMaker => ],
                [ DynamicPrereqs => {
                    -include_sub => [ 'foo' ],
                    -raw => [ 'foo();', 'bar();' ],
                  },
                ],
            ),
            path(qw(source lib Foo.pm)) => "package Foo;\n1;\n",
            path(qw(source share include_subs foo)) => "sub foo {\n  bar();\n}\n",
            path(qw(source share include_subs bar)) => "sub bar {\n  baz();\n}\n",
            path(qw(source share include_subs baz)) => "sub baz {\n  require POSIX;\n}\n",
        },
    },
);

Test::File::ShareDir->import(
    -root => path($tzil->tempdir)->child('source')->stringify,
    -share => { -module => { 'Dist::Zilla::Plugin::DynamicPrereqs' => 'share' } },
);

my $sub_dependencies = closed_over(\&Dist::Zilla::Plugin::DynamicPrereqs::_all_required_subs_for)->{'%sub_dependencies'};
$sub_dependencies->{foo} = [ qw(bar) ];
$sub_dependencies->{bar} = [ qw(baz) ];

my $sub_prereqs = closed_over(\&Dist::Zilla::Plugin::DynamicPrereqs::register_prereqs)->{'%sub_prereqs'};
$sub_prereqs->{baz} = { 'POSIX' => '0' };


$tzil->chrome->logger->set_debug(1);
is(
    exception { $tzil->build },
    undef,
    'build proceeds normally',
) or diag 'got log messages: ', explain $tzil->log_messages;

my $build_dir = path($tzil->tempdir)->child('build');

cmp_deeply(
    $tzil->distmeta,
    superhashof({
        dynamic_config => 1,
        prereqs => {
            configure => {
                requires => {
                    'ExtUtils::MakeMaker' => ignore,
                    'POSIX' => 0,
                },
            },
        },
    }),
    'added prereqs used by included subs',



( run in 1.008 second using v1.01-cache-2.11-cpan-39bf76dae61 )