Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kentnl/dist-zilla-util-test-kentnl
KENTNL's DZil plugin testing tool.
https://github.com/kentnl/dist-zilla-util-test-kentnl
dist-zilla perl
Last synced: 4 days ago
JSON representation
KENTNL's DZil plugin testing tool.
- Host: GitHub
- URL: https://github.com/kentnl/dist-zilla-util-test-kentnl
- Owner: kentnl
- License: other
- Created: 2010-11-03T04:34:44.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2017-03-01T20:02:24.000Z (over 7 years ago)
- Last Synced: 2024-06-18T21:41:03.369Z (5 months ago)
- Topics: dist-zilla, perl
- Language: Perl
- Size: 480 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.mkdn
- Changelog: Changes
- Contributing: CONTRIBUTING.pod
- License: LICENSE
Awesome Lists containing this project
README
# 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`](https://metacpan.org/pod/Dist::Zilla::Util::Test::KENTNL::dztest) 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 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
# COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Kent Fredric .
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.