logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Test2::Require - Base class and documentation for skip-unless type test packages.

Authors

Chad Granum <exodist@cpan.org>

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?

ASASUBCLASS package Test2::Require::Widget; use strict; use warnings; use base 'Test2::Require'; 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; use Test2::API qw/context/; 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;

Maintainers

Chad Granum <exodist@cpan.org>

Name

Test2::Require - Base class and documentation for skip-unless type test packages.

Source

The source code repository for Test2-Suite can be found at https://github.com/Test-More/Test2-Suite/.

See Also