Dist::Zilla::Util::Test::KENTNL(3pm) | User Contributed Perl Documentation | Dist::Zilla::Util::Test::KENTNL(3pm) |
Dist::Zilla::Util::Test::KENTNL - KENTNL's DZil plugin testing tool
version 1.005014
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.
Creates a "Dist::Zilla::Util::Test::KENTNL" object.
This is a much more sane approach to testing than "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 } }, });
Kent Fredric <kentnl@cpan.org>
This software is copyright (c) 2017 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.
2022-06-13 | perl v5.34.0 |