1Test::Stream::Plugin::CUosreer(3C)ontributed Perl DocumeTnetsatt:i:oSntream::Plugin::Core(3)
2
3
4
6 Test::Stream::Plugin::Core - Test::Stream implementation of the core
7 testing tools.
8
10 This distribution is deprecated in favor of Test2, Test2::Suite, and
11 Test2::Workflow.
12
13 See Test::Stream::Manual::ToTest2 for a conversion guide.
14
16 This is not a drop-in replacement for Test::More.
17
18 The new Testing library to replace Test::More. This library is directly
19 built on new internals instead of Test::Builder.
20
21 This module implements most of the same functionality as Test::More,
22 but since changing to this library from Test::More is not automatic,
23 some incompatible API changes have been made. If you decide to replace
24 Test::More in existing test files, you may have to update some function
25 calls.
26
28 use Test::Stream qw/Core/;
29
30 set_encoding('utf8');
31
32 plan($num); # Optional, set a plan
33
34 use Data::Dumper;
35 imported_ok qw/Dumper/;
36 not_imported_ok qw/dumper/;
37
38 # skip all tests in some condition
39 skip_all("do not run") if $cond;
40
41 if ($passing) {
42 pass('a passing test');
43 }
44 else {
45 fail('a failing test');
46 }
47
48 ok($x, "simple test");
49
50 # Check that the class or object has the specified methods defined.
51 can_ok($class_or_obj, @methods);
52
53 # Check that the class or object is or subclasses the specified packages
54 isa_ok($class_or_obj, @packages);
55
56 # Check that the class or object consumes the specified roles.
57 DOES_ok($class_or_obj, @roles);
58
59 # Check that $ref is a HASH reference
60 ref_ok($ref, 'HASH', 'Must be a hash')
61
62 # The preferred way to plan
63 done_testing;
64
66 All subs are exported by default.
67
68 ASSERTIONS
69 ok($bool)
70 ok($bool, $name)
71 ok($bool, $name, @diag)
72 Simple assertion. If $bool is true the test passes, if it is false
73 the test fails. The test name is optional, and all arguments after
74 the name are added as diagnostics message if and only if the test
75 fails. If the test passes all the diagnostics arguments will be
76 ignored.
77
78 pass()
79 pass($name)
80 Fire off a passing test (a single Ok event). The name is optional
81
82 fail()
83 fail($name)
84 fail($name, @diag)
85 Fire off a failing test (a single Ok event). The name and
86 diagnostics are optional.
87
88 imported_ok(@SUB_NAMES)
89 Check that the specified subs have been defined in the current
90 namespace. This will NOT find inherited subs, the subs must be in
91 the current namespace.
92
93 not_imported_ok(@SUB_NAMES)
94 Check that the specified subs have NOT been defined in the current
95 namespace. This will NOT find inherited subs, the subs must be in
96 the current namespace.
97
98 can_ok($thing, @methods)
99 This checks that $thing (either a class name, or a blessed
100 instance) has the specified methods.
101
102 isa_ok($thing, @classes)
103 This checks that $thing (either a class name, or a blessed
104 instance) is or subclasses the specified classes.
105
106 DOES_ok($thing, @roles)
107 This checks that $thing (either a class name, or a blessed
108 instance) does the specified roles.
109
110 ref_ok($thing)
111 ref_ok($thing, $type)
112 ref_ok($thing, $type, $name)
113 This checks that $thing is a reference. If $type is specified then
114 it will check that $thing is that type of reference.
115
116 ref_is($ref1, $ref2, $name)
117 Verify that 2 references are the exact same reference.
118
119 ref_is_not($ref1, $ref2, $name)
120 Verify that 2 references are not the exact same reference.
121
122 cmp_ok($got, $op, $expect)
123 cmp_ok($got, $op, $expect, $name)
124 cmp_ok($got, $op, $expect, $name, @diag)
125 Compare $got to $expect using the operator specified in $op. This
126 is effectively a "eval "\$got $op \$expect"" with some other stuff
127 to make it more sane. This is useful for comparing numbers,
128 overloaded objects, etc.
129
130 Overloading Note: Your input is passed as-is to the comparison. In
131 the event that the comparison fails between 2 overloaded objects,
132 the diagnostics will try to show you the overload form that was
133 used in comparisons. It is possible that the diagnostics will be
134 wrong, though attempts have been made to improve them since
135 Test::More.
136
137 Exceptions: If the comparison results in an exception then the test
138 will fail and the exception will be shown.
139
140 cmp_ok has an internal list of operators it supports. If you
141 provide an unsupported operator it will issue a warning. You can
142 add operators to the %Test::Stream::Plugin::Core::OPS hash, the key
143 should be the operator, and the value should either be 'str' for
144 string comparison operators, 'num' for numeric operators, or any
145 other true value for other operators.
146
147 Supported operators:
148
149 == (num)
150 != (num)
151 >= (num)
152 <= (num)
153 > (num)
154 < (num)
155 <=> (num)
156 eq (str)
157 ne (str)
158 gt (str)
159 lt (str)
160 ge (str)
161 le (str)
162 cmp (str)
163 !~ (str)
164 =~ (str)
165 &&
166 ||
167 xor
168 or
169 and
170 //
171 &
172 |
173 ~~
174
175 DIAGNOSTICS
176 diag(@messages)
177 Write diagnostics messages. All items in @messages will be joined
178 into a single string with no seperator. When using TAP diagnostics
179 are sent to STDERR.
180
181 note(@messages)
182 Write note-diagnostics messages. All items in @messages will be
183 joined into a single string with no seperator. When using TAP note-
184 diagnostics are sent to STDOUT.
185
186 PLANNING
187 plan($num)
188 Set the number of tests that are expected. This must be done first
189 or last, never in the middle of testing.
190
191 skip_all($reason)
192 Set the plan to 0 with a reason, then exit true. This should be
193 used before any tests are run.
194
195 done_testing
196 Used to mark the end of testing. This is a safe way to have a
197 dynamic or unknown number of tests.
198
199 BAIL_OUT($reason)
200 Something has gone horribly wrong, stop everything, kill all
201 threads and processes, end the process with a false exit status.
202
203 META
204 $todo = todo($reason)
205 todo $reason => sub { ... }
206 This is used to mark some results as TODO. TODO means that the test
207 may fail, but will not cause the overall test suite to fail.
208
209 There are 2 ways to use this, the first is to use a codeblock, the
210 TODO will only apply to the codeblock.
211
212 ok(1, "before"); # Not TODO
213
214 todo 'this will fail' => sub {
215 # This is TODO, as is any other test in this block.
216 ok(0, "blah");
217 };
218
219 ok(1, "after"); # Not TODO
220
221 The other way is to use a scoped variable, TODO will end when the
222 variable is destroyed or set to undef.
223
224 ok(1, "before"); # Not TODO
225
226 {
227 my $todo = todo 'this will fail';
228
229 # This is TODO, as is any other test in this block.
230 ok(0, "blah");
231 };
232
233 ok(1, "after"); # Not TODO
234
235 This is the same thing, but without the "{...}" scope.
236
237 ok(1, "before"); # Not TODO
238
239 my $todo = todo 'this will fail';
240
241 ok(0, "blah"); # TODO
242
243 $todo = undef;
244
245 ok(1, "after"); # Not TODO
246
247 skip($why)
248 skip($why, $count)
249 This is used to skip some tests. This requires you to wrap your
250 tests in a block labeled "SKIP:", this is somewhat magical. If no
251 $count is specified then it will issue a single result. If you
252 specify $count it will issue that many results.
253
254 SKIP: {
255 skip "This will wipe your drive";
256
257 # This never gets run:
258 ok(!system('sudo rm -rf /'), "Wipe drive");
259 }
260
261 set_encoding($encoding)
262 This will set the encoding to whatever you specify. This will only
263 effect the output of the current formatter, which is usually your
264 TAP output formatter.
265
267 Test::Stream::Plugin::Subtest
268 Subtest support
269
270 Test::Stream::Plugin::Intercept
271 Tools for intercepting events, exceptions, warnings, etc.
272
273 Test::Stream::Bundle::Tester
274 Tools for testing your test tools
275
276 Test::Stream::Plugin::IPC
277 Use this module directly for more control over concurrency.
278
280 The source code repository for Test::Stream can be found at
281 http://github.com/Test-More/Test-Stream/.
282
284 Chad Granum <exodist@cpan.org>
285
287 Chad Granum <exodist@cpan.org>
288
290 Copyright 2015 Chad Granum <exodist7@gmail.com>.
291
292 This program is free software; you can redistribute it and/or modify it
293 under the same terms as Perl itself.
294
295 See http://dev.perl.org/licenses/
296
297
298
299perl v5.30.0 2019-07-26 Test::Stream::Plugin::Core(3)