Test2::Require(3p) | Perl Programmers Reference Guide | Test2::Require(3p)

# 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/

2025-01-28 | perl v5.40.1