1package Test2; 2use strict; 3use warnings; 4 5our $VERSION = '1.302194'; 6 7 81; 9 10__END__ 11 12=pod 13 14=encoding UTF-8 15 16=head1 NAME 17 18Test2 - Framework for writing test tools that all work together. 19 20=head1 DESCRIPTION 21 22Test2 is a new testing framework produced by forking L<Test::Builder>, 23completely refactoring it, adding many new features and capabilities. 24 25=head2 WHAT IS NEW? 26 27=over 4 28 29=item Easier to test new testing tools. 30 31From the beginning Test2 was built with introspection capabilities. With 32Test::Builder it was difficult at best to capture test tool output for 33verification. Test2 Makes it easy with C<Test2::API::intercept()>. 34 35=item Better diagnostics capabilities. 36 37Test2 uses an L<Test2::API::Context> object to track filename, line number, and 38tool details. This object greatly simplifies tracking for where errors should 39be reported. 40 41=item Event driven. 42 43Test2 based tools produce events which get passed through a processing system 44before being output by a formatter. This event system allows for rich plugin 45and extension support. 46 47=item More complete API. 48 49Test::Builder only provided a handful of methods for generating lines of TAP. 50Test2 took inventory of everything people were doing with Test::Builder that 51required hacking it up. Test2 made public API functions for nearly all the 52desired functionality people didn't previously have. 53 54=item Support for output other than TAP. 55 56Test::Builder assumed everything would end up as TAP. Test2 makes no such 57assumption. Test2 provides ways for you to specify alternative and custom 58formatters. 59 60=item Subtest implementation is more sane. 61 62The Test::Builder implementation of subtests was certifiably insane. Test2 uses 63a stacked event hub system that greatly improves how subtests are implemented. 64 65=item Support for threading/forking. 66 67Test2 support for forking and threading can be turned on using L<Test2::IPC>. 68Once turned on threading and forking operate sanely and work as one would 69expect. 70 71=back 72 73=head1 GETTING STARTED 74 75If you are interested in writing tests using new tools then you should look at 76L<Test2::Suite>. L<Test2::Suite> is a separate cpan distribution that contains 77many tools implemented on Test2. 78 79If you are interested in writing new tools you should take a look at 80L<Test2::API> first. 81 82=head1 NAMESPACE LAYOUT 83 84This describes the namespace layout for the Test2 ecosystem. Not all the 85namespaces listed here are part of the Test2 distribution, some are implemented 86in L<Test2::Suite>. 87 88=head2 Test2::Tools:: 89 90This namespace is for sets of tools. Modules in this namespace should export 91tools like C<ok()> and C<is()>. Most things written for Test2 should go here. 92Modules in this namespace B<MUST NOT> export subs from other tools. See the 93L</Test2::Bundle::> namespace if you want to do that. 94 95=head2 Test2::Plugin:: 96 97This namespace is for plugins. Plugins are modules that change or enhance the 98behavior of Test2. An example of a plugin is a module that sets the encoding to 99utf8 globally. Another example is a module that causes a bail-out event after 100the first test failure. 101 102=head2 Test2::Bundle:: 103 104This namespace is for bundles of tools and plugins. Loading one of these may 105load multiple tools and plugins. Modules in this namespace should not implement 106tools directly. In general modules in this namespace should load tools and 107plugins, then re-export things into the consumers namespace. 108 109=head2 Test2::Require:: 110 111This namespace is for modules that cause a test to be skipped when conditions 112do not allow it to run. Examples would be modules that skip the test on older 113perls, or when non-essential modules have not been installed. 114 115=head2 Test2::Formatter:: 116 117Formatters live under this namespace. L<Test2::Formatter::TAP> is the only 118formatter currently. It is acceptable for third party distributions to create 119new formatters under this namespace. 120 121=head2 Test2::Event:: 122 123Events live under this namespace. It is considered acceptable for third party 124distributions to add new event types in this namespace. 125 126=head2 Test2::Hub:: 127 128Hub subclasses (and some hub utility objects) live under this namespace. It is 129perfectly reasonable for third party distributions to add new hub subclasses in 130this namespace. 131 132=head2 Test2::IPC:: 133 134The IPC subsystem lives in this namespace. There are not many good reasons to 135add anything to this namespace, with exception of IPC drivers. 136 137=head3 Test2::IPC::Driver:: 138 139IPC drivers live in this namespace. It is fine to create new IPC drivers and to 140put them in this namespace. 141 142=head2 Test2::Util:: 143 144This namespace is for general utilities used by testing tools. Please be 145considerate when adding new modules to this namespace. 146 147=head2 Test2::API:: 148 149This is for Test2 API and related packages. 150 151=head2 Test2:: 152 153The Test2:: namespace is intended for extensions and frameworks. Tools, 154Plugins, etc should not go directly into this namespace. However extensions 155that are used to build tools and plugins may go here. 156 157In short: If the module exports anything that should be run directly by a test 158script it should probably NOT go directly into C<Test2::XXX>. 159 160=head1 SEE ALSO 161 162L<Test2::API> - Primary API functions. 163 164L<Test2::API::Context> - Detailed documentation of the context object. 165 166L<Test2::IPC> - The IPC system used for threading/fork support. 167 168L<Test2::Formatter> - Formatters such as TAP live here. 169 170L<Test2::Event> - Events live in this namespace. 171 172L<Test2::Hub> - All events eventually funnel through a hub. Custom hubs are how 173C<intercept()> and C<run_subtest()> are implemented. 174 175=head1 CONTACTING US 176 177Many Test2 developers and users lurk on L<irc://irc.perl.org/#perl-qa> and 178L<irc://irc.perl.org/#toolchain>. We also have a slack team that can be joined 179by anyone with an C<@cpan.org> email address L<https://perl-test2.slack.com/> 180If you do not have an C<@cpan.org> email you can ask for a slack invite by 181emailing Chad Granum E<lt>exodist@cpan.orgE<gt>. 182 183=head1 SOURCE 184 185The source code repository for Test2 can be found at 186F<http://github.com/Test-More/test-more/>. 187 188=head1 MAINTAINERS 189 190=over 4 191 192=item Chad Granum E<lt>exodist@cpan.orgE<gt> 193 194=back 195 196=head1 AUTHORS 197 198=over 4 199 200=item Chad Granum E<lt>exodist@cpan.orgE<gt> 201 202=back 203 204=head1 COPYRIGHT 205 206Copyright 2020 Chad Granum E<lt>exodist@cpan.orgE<gt>. 207 208This program is free software; you can redistribute it and/or 209modify it under the same terms as Perl itself. 210 211See F<http://dev.perl.org/licenses/> 212 213=cut 214