Test::Module::Used - Test required module is really used and vice versa between lib/t and META.yml
=head1 SYNOPSIS
#!/usr/bin/perl -w
use strict;
use warnings;
use Test::Module::Used;
my $used = Test::Module::Used->new();
$used->ok;
=head1 DESCRIPTION
Test dependency between module and META.yml.
This module reads I<META.yml> and get I<build_requires> and I<requires>. It compares required module is really used and used module is really required.
=cut
=head1 Important changes
Some behavior changed since 0.1.3_01.
=over 4
=item * perl_version set in constructor is prior to use, and read version from META.yml(not read from use statement in *.pm)
=item * deprecated interfaces are deleted. (module_dir, test_module_dir, exclude_in_moduledir and push_exclude_in_moduledir)
=back
=cut
=head1 methods
=cut
=head2 new
create new instance
all parameters are passed by hash-style, and optional.
in ordinary use.
my $used = Test::Module::Used->new();
$used->ok();
all parameters are as follows.(specified values are default, except I<exclude_in_testdir>)
my $used = Test::Module::Used->new(
test_dir => ['t'], # directory(ies) which contains test scripts.
lib_dir => ['lib'], # directory(ies) which contains module libs.
test_lib_dir => ['t'], # directory(ies) which contains libs used ONLY in test (ex. MockObject for test)
meta_file => 'META.json' or
'META.yml' or
'META.yaml', # META file (YAML or JSON which contains module requirement information)
perl_version => '5.008', # expected perl version which is used for ignore core-modules in testing
exclude_in_testdir => [], # ignored module(s) for test even if it is used.
exclude_in_libdir => [], # ignored module(s) for your lib even if it is used.
exclude_in_build_requires => [], # ignored module(s) even if it is written in build_requires of META.yml.
exclude_in_requires => [], # ignored module(s) even if it is written in requires of META.yml.
);
if perl_version is not passed in constructor, this modules reads I<meta_file> and get perl version.
I<exclude_in_testdir> is automatically set by default. This module reads I<lib_dir> and parse "package" statement, then found "package" statements and myself(Test::Module::Used) is set.
I<exclude_in_libdir> is also automatically set by default. This module reads I<lib_dir> and parse "package" statement, found "package" statement are set.(Test::Module::Used isn't included)
First, This module reads I<META.yml> and get I<build_requires> and I<requires>. Next, reads module directory (by default I<lib>) and test directory(by default I<t>), and compare required module is really used and used module is really required. If all these requirement information is OK, test will success.
It is NOT allowed to call ok(), used_ok() and requires_ok() in same test file.