Provided by: libtest-class-perl_0.52-1_all bug

NAME

       Test::Class::Load - Load "Test::Class" classes automatically.

VERSION

       version 0.51

SYNOPSIS

        use Test::Class::Load qw(t/tests t/lib);
        Test::Class->runtests;

EXPORT

       None.

DESCRIPTION

       "Test::Class" typically uses a helper script to load the test classes.  It often looks something like
       this:

        #!/usr/bin/perl -T

        use strict;
        use warnings;

        use lib 't/tests';

        use MyTest::Foo;
        use MyTest::Foo::Bar;
        use MyTest::Foo::Baz;

        Test::Class->runtests;

       This causes a problem, though.  When you're writing a test class, it's easy to forget to add it to the
       helper script.  Then you run your huge test suite and see that all tests pass, even though you don't
       notice that it didn't run your new test class.  Or you delete a test class and you forget to remove it
       from the helper script.

       "Test::Class::Load" automatically finds and loads your test classes for you. There is no longer a need to
       list them individually.

BASIC USAGE

       Using "Test::Class::Load" is as simple as this:

        #!/usr/bin/perl -T

        use strict;
        use warnings;

        use Test::Class::Load 't/tests';

        Test::Class->runtests;

       That will search through all files in the "t/tests" directory and automatically load anything which ends
       in ".pm". You should only put test classes in those directories.

       If you have test classes in more than one directory, that's OK. Just list all of them in the import list.

        use Test::Class::Load qw<
          t/customer
          t/order
          t/inventory
        >;
        Test::Class->runtests;

ADVANCED USAGE

       Here's some examples of advanced usage of "Test::Class::Load".

   FILTER LOADED CLASSES
       You can redefine the filtering criteria, that is, decide what classes are picked up and what others are
       not. You do this simply by subclassing "Test::Class::Load" overriding the "is_test_class()" method. You
       might want to do this to only load modules which inherit from "Test::Class", or anything else for that
       matter.

       is_test_class
             $is_test_class = $class->is_test_class( $file, $directory )

           Returns  true  if  $file  in  $directory  should  be  considered  a  test  class  and  be  loaded  by
           Test::Class::Load. The default filter simply returns true if $file ends with ".pm"

       For example:

         use strict;
         use warnings;

         package My::Loader;
         use base qw( Test::Class::Load );

         # Overriding this selects what test classes
         # are considered by T::C::Load
         sub is_test_class {
             my ( $class, $file, $dir ) = @_;

             # return unless it's a .pm (the default)
             return unless $class->SUPER::is_test_class( $file, $dir );

             # and only allow .pm files with "Good" in their filename
             return $file =~ m{Good};
         }

         1;

   CUSTOMIZING TEST RUNS
       One problem with this style of testing is that you run all of the tests  every  time  you  need  to  test
       something.   If  you  want  to  run only one test class, it's problematic.  The easy way to do this is to
       change your helper script by deleting the "runtests" call:

        #!/usr/bin/perl -T

        use strict;
        use warnings;

        use Test::Class::Load 't/tests';

       Then, just make sure that all of your test classes inherit from your own base class which runs the  tests
       for you.  It might looks something like this:

        package My::Test::Class;

        use strict;
        use warnings;

        use base 'Test::Class';

        INIT { Test::Class->runtests } # here's the magic!

        1;

       Then you can run an individual test class by using the "prove" utility, tell it the directory of the test
       classes and the name of the test package you wish to run:

        prove -lv -It/tests Some::Test::Class

       You can even automate this by binding it to a key in "vim":

        noremap ,t  :!prove -lv -It/tests %<CR>

       Then  you  can just type ",t" ('comma', 'tee') and it will run the tests for your test class or the tests
       for your test script (if you're using a traditional "Test::More" style script).

       Of course, you can still run your helper script with "prove", "make test" or "./Build test" to run all of
       your test classes.

       If you do that, you'll have to make sure that the "-I" switches point to your test class directories.

SECURITY

       "Test::Class::Load" is taint safe.  Because we're reading the class names from the  directory  structure,
       they're marked as tainted when running under taint mode.  We use the following ultra-paranoid bit of code
       to untaint them. Please file a bug report if this is too restrictive.

        my ($package) = $_package =~ /^([[:word:]]+(?:::[[:word:]]+)*)$/;

SUPPORT

       See Test::Class

AUTHOR

       Curtis "Ovid" Poe, "<ovid@cpan.org>"

ACKNOWLEDGMENTS

       Thanks to David Wheeler for the idea and Adrian Howard for "Test::Class".

COPYRIGHT & LICENSE

       Copyright 2006 Curtis "Ovid" Poe, all rights reserved.

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

perl v5.32.1                                       2021-02-20                             Test::Class::Load(3pm)