Provided by: libtest-module-used-perl_0.2.6-3_all bug

NAME

       Test::Module::Used - Test required module is really used and vice versa between lib/t and META.yml

SYNOPSIS

         #!/usr/bin/perl -w
         use strict;
         use warnings;
         use Test::Module::Used;
         my $used = Test::Module::Used->new();
         $used->ok;

DESCRIPTION

       Test dependency between module and META.yml.

       This module reads META.yml and get build_requires and requires. It compares required module is really
       used and used module is really required.

Important changes

       Some behavior changed since 0.1.3_01.

       •   perl_version  set  in  constructor  is prior to use, and read version from META.yml(not read from use
           statement in *.pm)

       •   deprecated  interfaces  are   deleted.   (module_dir,   test_module_dir,   exclude_in_moduledir   and
           push_exclude_in_moduledir)

methods

   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 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 meta_file and get perl version.

       exclude_in_testdir  is  automatically  set  by  default.  This  module  reads lib_dir and parse "package"
       statement, then found "package" statements and myself(Test::Module::Used) is set.   exclude_in_libdir  is
       also  automatically  set  by  default.  This  module  reads  lib_dir and parse "package" statement, found
       "package" statement are set.(Test::Module::Used isn't included)

   ok()
       check used modules are required in META file and required modules in META files are used.

         my $used = Test::Module::Used->new(
           exclude_in_testdir => ['Test::Module::Used', 'My::Module'],
         );
         $used->ok;

       First, This module reads META.yml and get build_requires and requires. Next, reads module  directory  (by
       default lib) and test directory(by default 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.

   used_ok()
       Only  check  used  modules  are  required  in  META  file.   Test  will  success  if  unused  requires or
       build_requires are defined.

         my $used = Test::Module::Used->new();
         $used->used_ok;

       It is NOT allowed to call ok(), used_ok() and requires_ok() in same test file.

   requires_ok()
       Only check required modules in META file is used.  Test will success if used modules are not  defined  in
       META file.

         my $used = Test::Module::Used->new();
         $used->requires_ok;

       It is NOT allowed to call ok(), used_ok() and requires_ok() in same test file.

   push_exclude_in_libdir( @exclude_module_names )
       add ignored module(s) for your module(lib) even if it is used after new()'ed.  this is usable if you want
       to use auto set feature for exclude_in_libdir but manually specify exclude modules.

       For example,

        my $used = Test::Module::Used->new(); #automatically set exclude_in_libdir
        $used->push_exclude_in_libdir( qw(Some::Module::Which::You::Want::To::Exclude) );#module(s) which you want to exclude
        $used->ok(); #do test

   push_exclude_in_testdir( @exclude_module_names )
       add ignored module(s) for test even if it is used after new()'ed.  this is usable if you want to use auto
       set feature for exclude_in_testdir but manually specify exclude modules.

       For example,

        my $used = Test::Module::Used->new(); #automatically set exclude_in_testdir
        $used->push_exclude_in_testdir( qw(Some::Module::Which::You::Want::To::Exclude) );#module(s) which you want to exclude
        $used->ok(); #do test

AUTHOR

       Takuya Tsuchida <tsucchi@cpan.org>

SEE ALSO

       Test::Dependencies has almost same feature.

REPOSITORY

       <http://github.com/tsucchi/Test-Module-Used>

COPYRIGHT AND LICENSE

       Copyright (c) 2008-2014 Takuya Tsuchida

       This  library  is  free  software;  you can redistribute it and/or modify it under the same terms as Perl
       itself.

perl v5.36.0                                       2022-11-19                            Test::Module::Used(3pm)