dwww Home | Manual pages | Find package

Test2::Require(3perl)   Perl Programmers Reference Guide  Test2::Require(3perl)

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;

           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;

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

MAINTAINERS
       Chad Granum <exodist@cpan.org>

AUTHORS
       Chad Granum <exodist@cpan.org>

COPYRIGHT
       Copyright 2018 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/

perl v5.40.1                       2026-08-30             Test2::Require(3perl)

Generated by dwww version 1.16 on Sat Oct 3 07:35:58 CEST 2026.