NAME
Test2::Require - Base class and documentation for skip-unless type test packages.
DESCRIPTION
Test2::Require::* packages are packages you load to ensure your test file is skipped unless a specific requirement is met. Modules in this namespace may subclass Test2::Require if they wish, but it is not strictly necessary to do so.
HOW DO I WRITE A 'REQUIRE' MODULE?
AS A SUBCLASS
package
Test2::Require::Widget;
use
strict;
use
warnings;
sub
HAVE_WIDGETS { ... };
sub
skip {
my
$class
=
shift
;
my
@import_args
=
@_
;
if
(HAVE_WIDGETS()) {
# We have widgets, do not skip
return
undef
;
}
else
{
# No widgets, skip the test
return
"Skipped because there are no widgets"
unless
HAVE_WIDGETS();
}
}
1;
A subclass of Test2::Require simply needs to implement a skip()
method. This method will receive all import arguments. This method should return undef if the test should run, and should return a reason for skipping if the test should be skipped.
STAND-ALONE
If you do not wish to subclass Test2::Require then you should write an import()
method:
package
Test2::Require::Widget;
use
strict;
use
warnings;
sub
HAVE_WIDGETS { ... };
sub
import
{
my
$class
=
shift
;
# Have widgets, should run.
return
if
HAVE_WIDGETS();
# Use the context object to create the event
my
$ctx
= context();
$ctx
->plan(0,
SKIP
=>
"Skipped because there are no widgets"
);
$ctx
->release;
}
1;
SOURCE
The source code repository for Test2-Suite can be found at https://github.com/Test-More/test-more/.
MAINTAINERS
AUTHORS
COPYRIGHT
Copyright Chad Granum <exodist@cpan.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://dev.perl.org/licenses/