NAME
Test::DZil - tools for testing Dist::Zilla plugins
VERSION
version 4.300020
DESCRIPTION
Test::DZil provides routines for writing tests for Dist::Zilla plugins.
FUNCTIONS
Builder
Minter
my
$tzil
= Builder->from_config(...);
These return class names that subclass Dist::Zilla::Dist::Builder or Dist::Zilla::Dist::Minter, respectively, with the Dist::Zilla::Tester behavior added.
is_filelist
is_filelist( \
@files_we_have
, \
@files_we_want
,
$desc
);
This test assertion compares two arrayrefs of filenames, taking care of slash normalization and sorting. @files_we_have
may also contain objects that do Dist::Zilla::Role::File.
is_yaml
is_yaml(
$yaml_string
,
$want_struct
,
$comment
);
This test assertion deserializes the given YAML string and does a cmp_deeply
.
is_json
is_json(
$json_string
,
$want_struct
,
$comment
);
This test assertion deserializes the given JSON string and does a cmp_deeply
.
dist_ini
my
$ini_text
= dist_ini(\
%root_config
,
@plugins
);
This routine returns a string that could be used to populate a simple dist.ini file. The %root_config
gives data for the "root" section of the configuration. To provide a line multiple times, provide an arrayref. For example, the root section could read:
{
name
=>
'Dist-Sample'
,
author
=> [
'J. Smith <jsmith@example.com>'
,
'Q. Smith <qsmith@example.com>'
,
],
}
The root section is optional.
Plugins can be given in a few ways:
"PluginMoniker"
[ "PluginMoniker" ]
-
These become
[PluginMoniker]
[ "PluginMoniker", "PluginName" ]
-
This becomes
[PluginMoniker / PluginName]
[ "PluginMoniker", { ... } ]
[ "PluginMoniker", "PluginName", { ... } ]
-
These use the given hashref as the parameters inside the section, with the same semantics as the root section.
simple_ini
This behaves exactly like dist_ini
, but it merges any given root config into a starter config, which means that you can often skip any explicit root config. The starter config may change slightly over time, but is something like this:
{
name
=>
'DZT-Sample'
,
abstract
=>
'Sample DZ Dist'
,
version
=>
'0.001'
,
author
=>
'E. Xavier Ample <example@example.org>'
,
license
=>
'Perl_5'
,
copyright_holder
=>
'E. Xavier Ample'
,
}
AUTHOR
Ricardo SIGNES <rjbs@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.