{
my
$tzil
= Builder->from_config(
{
dist_root
=>
'corpus/dist/DZT'
},
{
add_files
=> {
'source/dist.ini'
=> simple_ini(
'GatherDir'
,
'ModuleBuild'
,
[
Prereqs
=> {
'Foo::Bar'
=>
'1.20'
} ],
[
Prereqs
=>
BuildRequires
=> {
'Builder::Bob'
=>
'9.901'
} ],
[
Prereqs
=>
TestRequires
=> {
'Test::Deet'
=>
'7'
} ],
),
},
},
);
$tzil
->build;
my
$modulebuild
=
$tzil
->plugin_named(
'ModuleBuild'
);
my
$have
=
$modulebuild
->__module_build_args;
my
%want
= (
'module_name'
=>
'DZT::Sample'
,
'dist_name'
=>
'DZT-Sample'
,
'dist_abstract'
=>
'Sample DZ Dist'
,
'dist_version'
=>
'0.001'
,
'dist_author'
=> [
'E. Xavier Ample <example@example.org>'
],
'license'
=>
'perl'
,
'requires'
=> {
'Foo::Bar'
=>
'1.20'
},
build_requires
=> {
'Builder::Bob'
=>
'9.901'
,
'Module::Build'
=>
'0.28'
,
},
test_requires
=> {
'Test::Deet'
=>
'7'
,
},
'configure_requires'
=> {
'Module::Build'
=>
'0.28'
,
},
'recursive_test_files'
=> ignore,
);
cmp_deeply(
$have
,
\
%want
,
'module_build_args'
,
);
is(
$modulebuild
->_use_custom_class,
q{}
,
'no custom class by default'
);
}
{
my
$tzil
= Builder->from_config(
{
dist_root
=>
'corpus/dist/DZT'
},
{
add_files
=> {
'source/dist.ini'
=> simple_ini(
'GatherDir'
, [
'ModuleBuild'
=> {
mb_class
=>
'Foo::Build'
} ],
),
},
},
);
$tzil
->build;
my
$modulebuild
=
$tzil
->plugin_named(
'ModuleBuild'
);
is(
$modulebuild
->_use_custom_class,
'loads custom class from inc'
);
my
$build
=
$tzil
->slurp_file(
'build/Build.PL'
);
like(
$build
,
qr/\QFoo::Build->new/
,
'Build.PL calls ->new on Foo::Build'
);
}
{
my
$tzil
= Builder->from_config(
{
dist_root
=>
'corpus/dist/DZT'
},
{
add_files
=> {
'source/dist.ini'
=> simple_ini(
'GatherDir'
, [
'ModuleBuild'
=> {
mb_class
=>
'Foo::Build'
,
mb_lib
=>
'inc,priv,something'
,
build_element
=> [
qw(js sql)
],
} ] ),
},
},
);
$tzil
->build;
my
$modulebuild
=
$tzil
->plugin_named(
'ModuleBuild'
);
is(
$modulebuild
->_use_custom_class,
q{use lib qw{inc priv something}
;
use
Foo::Build;},
'loads custom class from items specificed in mb_lib'
);
is(
$modulebuild
->_add_build_elements,
'$build->add_build_element($_) for qw(js sql);'
,
'adds build elements'
);
my
$build
=
$tzil
->slurp_file(
'build/Build.PL'
);
like(
$build
,
qr/\QFoo::Build->new/
,
'Build.PL calls ->new on Foo::Build'
);
like(
$build
,
qr/\$build->add_build_element\(\$_\) for qw\(js sql\);/
,
'Build.PL calls add_build_element for all elements'
);
}
done_testing;