NAME
Dist::Zilla::Util::Test::KENTNL - KENTNL's DZil plugin testing tool
VERSION
version 1.005014
DESCRIPTION
This module is KENTNL's kit for testing Dist::Zilla.
Most of his modules should be moving to using the `dztest` model instead which is more flexible source side.
METHODS
"dztest"
Creates a "Dist::Zilla::Util::Test::KENTNL" object.
This is a much more sane approach to testing than "test_config"
test_config
This is pretty much why this module exists. Its a little perverse, but makes testing WAY easier.
my $plugin = test_config({dist_root => 'corpus/dist/DZT',ini => ['GatherDir',[ 'Prereqs' => { 'Test::Simple' => '0.88' } ],],post_build_callback => sub {my $config = shift;# Handy place to put post-construction test code.die $config->{error} if $config->{error};},find_plugin => 'SomePluginName'});
Additionally, you can add this section
callback => {method => 'metadata',args => [],code => sub {my $data = shift;print "Errors ( if any ) $data->{error} ";dump $data->{response}; # response from ->metadata$data->{instance}->doMorestuffbyhand();# ok( .... 'good place for a test!' )},}
Generally, I find it easier to do 1-off function wrappers, i.e.:
sub make_plugin {my @args = @_;return test_config({dist_root => 'corpus/dist/DZT',ini => ['GatherDir',[ 'Prereqs' => {'Test::Simple' => '0.88' } ],[ 'FakePlugin' => {@args } ],],post_build_callback => sub {my $config = shift;die $config->{error} if $config->{error};},find_plugin => 'FakePlugin',});}
Which lets us do
ok( make_plugin( inherit_version => 1 )->inherit_version , 'inherit_verion = 1 propagates' );
parameters
my $foo = test_config({dist_root => 'Some/path' # optional, strongly recommended.ini => [ # optional, strongly recommended.'BasicPlugin',[ 'AdvancedPlugin' => { %pluginargs }],],build => 0/1 # works fine as 0, 1 tells it to call the ->build() method.post_build_callback => sub {my ( $conf ) = shift;$conf->{error} # any errors that occured during construction/build$conf->{instance} # the constructed instance# this is called immediately after construction, do what you will with this.# mostly for convenience},find_plugin => 'Some::Plugin::Name', # makes test_config find and return the plugin that matched that name instead of# the config instancecallback => { # overrides the return value of find_plugin if it is calledmethod => 'method_to_call',args => [qw( hello world )],code => sub {my ($conf) = shift;$conf->{plugin} # the constructed plugin instance$conf->{error} # any errors discovered when calling ->method( args )$conf->{instance} # the zilla instance$conf->{response} # the return value of ->method( args )# mostly just another convenience of declarative nature.return someValueHere # this value will be returned by test_config}},});
AUTHOR
Kent Fredric <[email protected]>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Kent Fredric <[email protected]>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.