Provided by: libdist-zilla-util-test-kentnl-perl_1.005013-1_all bug

NAME

       Dist::Zilla::Util::Test::KENTNL - KENTNL's DZil plugin testing tool

VERSION

       version 1.005013

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 instance

             callback => {                        # overrides the return value of find_plugin if it is called
               method => '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 <kentnl@cpan.org>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2015 by Kent Fredric <kentnl@cpan.org>.

       This is free software; you can redistribute it and/or modify it under the same terms as
       the Perl 5 programming language system itself.