Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
KENTNL's DZil plugin testing tool.
Perl Perl6

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib/Dist/Zilla/Util/Test
maint
misc
t
.gitignore
.mailmap
.perltidyrc
.travis.yml
Changes
LICENSE
README.mkdn
dist.ini
dist.ini.meta
perlcritic.rc
weaver.ini

README.mkdn

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.

Something went wrong with that request. Please try again.