```{index} single: Test2::Suite ``` # Test2::Suite Distribution with a rich set of tools built upon the Test2 framework. ## DESCRIPTION Rich set of tools, plugins, bundles, etc built upon the [Test2](../Test2.md) testing library. If you are interested in writing tests, this is the distribution for you. ### WHAT ARE TOOLS, PLUGINS, AND BUNDLES? - TOOLS Tools are packages that export functions for use in test files. These functions typically generate events. Tools **SHOULD NEVER** alter behavior of other tools, or the system in general. - PLUGINS Plugins are packages that produce effects, or alter behavior of tools. An example would be a plugin that causes the test to bail out after the first failure. Plugins **SHOULD NOT** export anything. - BUNDLES Bundles are collections of tools and plugins. A bundle should load and re-export functions from Tool packages. A bundle may also load and configure any number of plugins. If you want to write something that both exports new functions, and affects behavior, you should write both a Tools distribution, and a Plugin distribution, then a Bundle that loads them both. This is important as it helps avoid the problem where a package exports much-desired tools, but also produces undesirable side-effects. ## INCLUDED BUNDLES - Test2::V# These do not live in the bundle namespace as they are the primary ways to use Test2::Suite. The current latest is [Test2::V1](V1.md). ```perl use Test2::V1; T2->ok(...); # Note: is does deep checking, unlike the 'is' from Test::More. $T2->is(...); ... T2->done_testing; ``` See [Test2::V1](V1.md) for complete documentation. - Extended **\*\* Deprecated \*\*** See [Test2::V0](V0.md) or [Test2::V1](V1.md). ```perl use Test2::Bundle::Extended; # strict and warnings are on for you now. ok(...); # Note: is does deep checking, unlike the 'is' from Test::More. is(...); ... done_testing; ``` This bundle includes every tool listed in the "INCLUDED TOOLS" section below, except for [Test2::Tools::ClassicCompare](Tools/ClassicCompare.md). This bundle provides most of what anyone writing tests could need. This is also the preferred bundle/toolset of the [Test2](../Test2.md) author. See [Test2::Bundle::Extended](Bundle/Extended.md) for complete documentation. - More ```perl use Test2::Bundle::More; use strict; use warnings; plan 3; # Or you can use done_testing at the end ok(...); is(...); # Note: String compare is_deeply(...); ... done_testing; # Use instead of plan ``` This bundle is meant to be a _mostly_ drop-in replacement for [Test::More](../Test/More.md). There are some notable differences to be aware of however. Some exports are missing: `eq_array`, `eq_hash`, `eq_set`, `$TODO`, `explain`, `use_ok`, `require_ok`. As well it is no longer possible to set the plan at import: `use .. tests => 5`. `$TODO` has been replaced by the `todo()` function. Planning is done using `plan`, `skip_all`, or `done_testing`. See [Test2::Bundle::More](Bundle/More.md) for complete documentation. - Simple ```perl use Test2::Bundle::Simple; use strict; use warnings; plan 1; ok(...); ``` This bundle is meant to be a _mostly_ drop-in replacement for [Test::Simple](../Test/Simple.md). See [Test2::Bundle::Simple](Bundle/Simple.md) for complete documentation. ## INCLUDED TOOLS - Basic Basic provides most of the essential tools previously found in [Test::More](../Test/More.md). However it does not export any tools used for comparison. The basic `pass`, `fail`, `ok` functions are present, as are functions for planning. See [Test2::Tools::Basic](Tools/Basic.md) for complete documentation. - Compare This provides `is`, `like`, `isnt`, `unlike`, and several additional helpers. **Note:** These are all _deep_ comparison tools and work like a combination of [Test::More](../Test/More.md)'s `is` and `is_deeply`. See [Test2::Tools::Compare](Tools/Compare.md) for complete documentation. - ClassicCompare This provides [Test::More](../Test/More.md) flavored `is`, `like`, `isnt`, `unlike`, and `is_deeply`. It also provides `cmp_ok`. See [Test2::Tools::ClassicCompare](Tools/ClassicCompare.md) for complete documentation. - Class This provides functions for testing objects and classes, things like `isa_ok`. See [Test2::Tools::Class](Tools/Class.md) for complete documentation. - Defer This provides functions for writing test functions in one place, but running them later. This is useful for testing things that run in an altered state. See [Test2::Tools::Defer](Tools/Defer.md) for complete documentation. - Encoding This exports a single function that can be used to change the encoding of all your test output. See [Test2::Tools::Encoding](Tools/Encoding.md) for complete documentation. - Exports This provides tools for verifying exports. You can verify that functions have been imported, or that they have not been imported. See [Test2::Tools::Exports](Tools/Exports.md) for complete documentation. - Mock This provides tools for mocking objects and classes. This is based largely on [Mock::Quick](https://metacpan.org/pod/Mock::Quick), but several interface improvements have been added that cannot be added to Mock::Quick itself without breaking backwards compatibility. See [Test2::Tools::Mock](Tools/Mock.md) for complete documentation. - Ref This exports tools for validating and comparing references. See [Test2::Tools::Ref](Tools/Ref.md) for complete documentation. - Spec This is an RSPEC implementation with concurrency support. See [Test2::Tools::Spec](Tools/Spec.md) for more details. - Subtest This exports tools for running subtests. See [Test2::Tools::Subtest](Tools/Subtest.md) for complete documentation. - Target This lets you load the package(s) you intend to test, and alias them into constants/package variables. See [Test2::Tools::Target](Tools/Target.md) for complete documentation. ## INCLUDED PLUGINS - BailOnFail The much requested "bail-out on first failure" plugin. When this plugin is loaded, any failure will cause the test to bail out immediately. See [Test2::Plugin::BailOnFail](Plugin/BailOnFail.md) for complete documentation. - DieOnFail The much requested "die on first failure" plugin. When this plugin is loaded, any failure will cause the test to die immediately. See [Test2::Plugin::DieOnFail](Plugin/DieOnFail.md) for complete documentation. - ExitSummary This plugin gives you statistics and diagnostics at the end of your test in the event of a failure. See [Test2::Plugin::ExitSummary](Plugin/ExitSummary.md) for complete documentation. - SRand Use this to set the random seed to a specific seed, or to the current date. See [Test2::Plugin::SRand](Plugin/SRand.md) for complete documentation. - UTF8 Turn on utf8 for your testing. This sets the current file to be utf8, it also sets STDERR, STDOUT, and your formatter to all output utf8. See [Test2::Plugin::UTF8](Plugin/UTF8.md) for complete documentation. ## INCLUDED REQUIREMENT CHECKERS - AuthorTesting Using this package will cause the test file to be skipped unless the AUTHOR\_TESTING environment variable is set. See [Test2::Require::AuthorTesting](Require/AuthorTesting.md) for complete documentation. - EnvVar Using this package will cause the test file to be skipped unless a custom environment variable is set. See [Test2::Require::EnvVar](Require/EnvVar.md) for complete documentation. - Fork Using this package will cause the test file to be skipped unless the system is capable of forking (including emulated forking). See [Test2::Require::Fork](Require/Fork.md) for complete documentation. - RealFork Using this package will cause the test file to be skipped unless the system is capable of true forking. See [Test2::Require::RealFork](Require/RealFork.md) for complete documentation. - Module Using this package will cause the test file to be skipped unless the specified module is installed (and optionally at a minimum version). See [Test2::Require::Module](Require/Module.md) for complete documentation. - Perl Using this package will cause the test file to be skipped unless the specified minimum perl version is met. See [Test2::Require::Perl](Require/Perl.md) for complete documentation. - Threads Using this package will cause the test file to be skipped unless the system has threading enabled. **Note:** This will not turn threading on for you. See [Test2::Require::Threads](Require/Threads.md) for complete documentation. ## SEE ALSO See the [Test2](../Test2.md) documentation for a namespace map. Everything in this distribution uses [Test2](../Test2.md). [Test2::Manual](Manual.md) is the Test2 Manual. ## CONTACTING US Many Test2 developers and users lurk on [irc://irc.perl.org/#perl](irc://irc.perl.org/#perl). We also have a slack team that can be joined by anyone with an `@cpan.org` email address [https://perl-test2.slack.com/](https://perl-test2.slack.com/) If you do not have an `@cpan.org` email you can ask for a slack invite by emailing Chad Granum . ## SOURCE The source code repository for Test2-Suite can be found at `https://github.com/Test-More/test-more/`. ## MAINTAINERS - Chad Granum ## AUTHORS - Chad Granum ## COPYRIGHT Copyright Chad Granum . 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/`