1Test2::Require(3) User Contributed Perl Documentation Test2::Require(3)
2
3
4
6 Test2::Require - Base class and documentation for skip-unless type test
7 packages.
8
10 Test2::Require::* packages are packages you load to ensure your test
11 file is skipped unless a specific requirement is met. Modules in this
12 namespace may subclass Test2::Require if they wish, but it is not
13 strictly necessary to do so.
14
16 AS A SUBCLASS
17 package Test2::Require::Widget;
18 use strict;
19 use warnings;
20
21 use base 'Test2::Require';
22
23 sub HAVE_WIDGETS { ... };
24
25 sub skip {
26 my $class = shift;
27 my @import_args = @_;
28
29 if (HAVE_WIDGETS()) {
30 # We have widgets, do not skip
31 return undef;
32 }
33 else {
34 # No widgets, skip the test
35 return "Skipped because there are no widgets" unless HAVE_WIDGETS();
36 }
37 }
38
39 1;
40
41 A subclass of Test2::Require simply needs to implement a skip() method.
42 This method will receive all import arguments. This method should
43 return undef if the test should run, and should return a reason for
44 skipping if the test should be skipped.
45
46 STAND-ALONE
47 If you do not wish to subclass Test2::Require then you should write an
48 import() method:
49
50 package Test2::Require::Widget;
51 use strict;
52 use warnings;
53
54 use Test2::API qw/context/;
55
56 sub HAVE_WIDGETS { ... };
57
58 sub import {
59 my $class = shift;
60
61 # Have widgets, should run.
62 return if HAVE_WIDGETS();
63
64 # Use the context object to create the event
65 my $ctx = context();
66 $ctx->plan(0, SKIP => "Skipped because there are no widgets");
67 $ctx->release;
68 }
69
70 1;
71
73 The source code repository for Test2-Suite can be found at
74 https://github.com/Test-More/Test2-Suite/.
75
77 Chad Granum <exodist@cpan.org>
78
80 Chad Granum <exodist@cpan.org>
81
83 Copyright 2018 Chad Granum <exodist@cpan.org>.
84
85 This program is free software; you can redistribute it and/or modify it
86 under the same terms as Perl itself.
87
88 See http://dev.perl.org/licenses/
89
90
91
92perl v5.36.0 2023-03-23 Test2::Require(3)