NAME
Test::CPANfile - see if cpanfile lists every used modules
SYNOPSIS
# By default, this module tests if cpanfile has all the used modules.
use Test::CPANfile;
use Test::More;
cpanfile_has_all_used_modules();
done_testing;
# You can use an optional CPAN package index to see if
# a sibling of a used-but-not-listed-in-cpanfile module
# is listed.
use Test::CPANfile;
use Test::More;
use CPAN::Common::Index::Mirror;
my $index = CPAN::Common::Index::Mirror->new;
cpanfile_has_all_used_modules(
parser => [qw/:installed/],
index => $index,
);
done_testing;
# You can ignore specific files
use Test::CPANfile;
use Test::More;
# ignore prereqs in lib/Foo/Bar/Win32.pm, lib/Foo/Bar/Mac.pm etc
cpanfile_has_all_used_modules(
ignore => [qw!lib/Foo/Bar/!],
);
done_testing;
# Or you can scan extra files
use Test::CPANfile;
use Test::More;
cpanfile_has_all_used_modules(
lib => [glob 'extlib/*/lib'],
);
done_testing;
DESCRIPTION
This module tests if cpanfile lists every use
d modules or not.
It's ok if you list a module that is eval
ed in the code, or a module that does not appear in the code, as requires
, but it complains if a use
d module is listed as recommends
or suggests
.
FUNCTION
cpanfile_has_all_used_modules()
You can pass an optional hash, which is passed to Perl::PrereqScanner::NotQuiteLite::App's constructor to change its behavior. Notable options are:
- exclude_core, perl_version
-
Test::CPANfile usually ignores prerequisites that are bundled in the Perl core (of 5.008001 by default; you can change this with
perl_version
option). If you do not want this, explicitly setexclude_core
option to false. - allow_test_pms
-
Test::CPANfile usually ignores
.pm
files undert/
directory if modules in those .pm files are not used in.t
files. With this option, Test::CPANfile looks for those.pm
files undert/
, regardless they are used in.t
files or not. This is useful if you are using a test module that automatically loads modules undert/
. If Test::Class family is used undert/
, this option is implicitly set. - ignore
-
Set a list of paths Test::CPANfile should ignore. This is useful when your distribution has a set of OS-specific modules, for example.
- ignore_re
-
You can also specify a regexp instead of a list of paths. If this is set,
ignore
options are ignored. - libs
-
If your distribution has an uncommon directory layout for some reasons, you can add extra directories to scan. This also might help when you have private modules that are not uploaded on the CPAN. Put them under
extlib/
for example, and add the directory tolibs
, then Test::CPANfile also looks under the directory, and excludes modules found there as a part of the distribution, at the cost of extra dependencies for those private modules. - recommends, suggests, develop
-
Set these to test more extensively.
CPAN::Common::Index support
If you pass an optional CPAN::Common::Index instance (as the second example above), it is used to find a distribution that contains a used
module. The test for the module passes if one of the modules that the distribution contains is listed in the cpanfile, even when the used
module itself is not listed.
SEE ALSO
Perl::PrereqScanner::NotQuiteLite, CPAN::Common::Index
AUTHOR
Kenichi Ishigaki, <ishigaki@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Kenichi Ishigaki.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.