Why not adopt me?
This distribution is up for adoption!
If you're interested then please contact the PAUSE module admins via
email.
NAME
Dist::Zilla::Util::Test::KENTNL - KENTNL's DZil plugin testing tool.
VERSION
version 0.01015822
METHODS
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) 2012 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.