Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Thursday, June 13, 2019

Test2 (3)


Test2 - Framework for writing test tools that all work together.


Please see following description for synopsis


Perl Programmers Reference Guide                                      Test2(3)

       Test2 - Framework for writing test tools that all work together.

       Test2 is a new testing framework produced by forking Test::Builder,
       completely refactoring it, adding many new features and capabilities.

       Easier to test new testing tools.
           From the beginning Test2 was built with introspection capabilities.
           With Test::Builder it was difficult at best to capture test tool
           output for verification. Test2 Makes it easy with

       Better diagnostics capabilities.
           Test2 uses an Test2::API::Context object to track filename, line
           number, and tool details. This object greatly simplifies tracking
           for where errors should be reported.

       Event driven.
           Test2 based tools produce events which get passed through a
           processing system before being output by a formatter. This event
           system allows for rich plugin and extension support.

       More complete API.
           Test::Builder only provided a handful of methods for generating
           lines of TAP.  Test2 took inventory of everything people were doing
           with Test::Builder that required hacking it up. Test2 made public
           API functions for nearly all the desired functionality people
           didn't previously have.

       Support for output other than TAP.
           Test::Builder assumed everything would end up as TAP. Test2 makes
           no such assumption. Test2 provides ways for you to specify
           alternative and custom formatters.

       Subtest implementation is more sane.
           The Test::Builder implementation of subtests was certifiably
           insane. Test2 uses a stacked event hub system that greatly improves
           how subtests are implemented.

       Support for threading/forking.
           Test2 support for forking and threading can be turned on using
           Test2::IPC.  Once turned on threading and forking operate sanely
           and work as one would expect.

       If you are interested in writing tests using new tools then you should
       look at Test2::Suite. Test2::Suite is a separate cpan distribution that
       contains many tools implemented on Test2.

       If you are interested in writing new tools you should take a look at
       Test2::API first.

       This describes the namespace layout for the Test2 ecosystem. Not all
       the namespaces listed here are part of the Test2 distribution, some are
       implemented in Test2::Suite.

       This namespace is for sets of tools. Modules in this namespace should
       export tools like "ok()" and "is()". Most things written for Test2
       should go here.  Modules in this namespace MUST NOT export subs from
       other tools. See the "Test2::Bundle::" namespace if you want to do

       This namespace is for plugins. Plugins are modules that change or
       enhance the behavior of Test2. An example of a plugin is a module that
       sets the encoding to utf8 globally. Another example is a module that
       causes a bail-out event after the first test failure.

       This namespace is for bundles of tools and plugins. Loading one of
       these may load multiple tools and plugins. Modules in this namespace
       should not implement tools directly. In general modules in this
       namespace should load tools and plugins, then re-export things into the
       consumers namespace.

       This namespace is for modules that cause a test to be skipped when
       conditions do not allow it to run. Examples would be modules that skip
       the test on older perls, or when non-essential modules have not been

       Formatters live under this namespace. Test2::Formatter::TAP is the only
       formatter currently. It is acceptable for third party distributions to
       create new formatters under this namespace.

       Events live under this namespace. It is considered acceptable for third
       party distributions to add new event types in this namespace.

       Hub subclasses (and some hub utility objects) live under this
       namespace. It is perfectly reasonable for third party distributions to
       add new hub subclasses in this namespace.

       The IPC subsystem lives in this namespace. There are not many good
       reasons to add anything to this namespace, with exception of IPC


       IPC drivers live in this namespace. It is fine to create new IPC
       drivers and to put them in this namespace.

       This namespace is for general utilities used by testing tools. Please
       be considerate when adding new modules to this namespace.

       This is for Test2 API and related packages.

       The Test2:: namespace is intended for extensions and frameworks. Tools,
       Plugins, etc should not go directly into this namespace. However
       extensions that are used to build tools and plugins may go here.

       In short: If the module exports anything that should be run directly by
       a test script it should probably NOT go directly into "Test2::XXX".

       See attributes(7) for descriptions of the following attributes:

       |Availability   | runtime/perl-526      |
       |Stability      | Pass-through volatile |
       Test2::API - Primary API functions.

       Test2::API::Context - Detailed documentation of the context object.

       Test2::IPC - The IPC system used for threading/fork support.

       Test2::Formatter - Formatters such as TAP live here.

       Test2::Event - Events live in this namespace.

       Test2::Hub - All events eventually funnel through a hub. Custom hubs
       are how "intercept()" and "run_subtest()" are implemented.

       Many Test2 developers and users lurk on <irc://irc.perl.org/#perl-qa>
       and <irc://irc.perl.org/#toolchain>. We also have a slack team that can
       be joined by anyone with an "@cpan.org" email address
       <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

       The source code repository for Test2 can be found at

       Chad Granum <exodist@cpan.org>

       Chad Granum <exodist@cpan.org>

       Copyright 2016 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/

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from

       Further information about this software can be found on the open source
       community website at http://www.perl.org/.

perl v5.26.3                      2018-03-23                          Test2(3)