Test::Stream::Manual::Components(3)

NAME
Test::Stream::Manual::Components - Categorization and overview of Test::Stream components and modules.

DESCRIPTION
This document categorizes the modues included in the Test-Stream distribution. This document also gives basic information about each component, and what modules they connect with. This document is primarily useful for maintainers and test tool authors.

ESSENTIAL INFRASTRUCTURE
The modules in this section are the most critical. These modules are the heart of Test::Stream.

Test::Stream::Capabilities
    The Test::Stream::Capabilities module detects various capabilities of the current system, this includes the ability to fork or use threads.

Test::Stream::Context
    The Test::Stream::Context module is easily the most important module in Test::Stream. The context object is the primary interface for tool authors. The context object ties everything together and ensures events get to the correct hub. The context object also makes it possible to report the filename and line numbers of errors.

Test::Stream::DebugInfo
    The Test::Stream::DebugInfo is used by the context object to track filename, line numbers, todo status, and other information that is important when reporting a test failure.

Test::Stream::Event
    The Test::Stream::Event module is the base class for all events, such as "Ok", "Diag", etc.

Test::Stream::Exporter
    The Test::Stream::Exporter module is used by Test::Stream to accomplish export behavior well beyond what Exporter is capable of.

    The Test::Stream::Exporter::Meta module is a key component of Test::Stream::Exporter.

Test::Stream::Formatter::TAP
    Test::Stream::Formatter::TAP is the TAP output formatter. This module is used whenever Test::Stream outputs TAP.

Test::Stream::HashBase
    Test::Stream::HashBase is the object builder used in most Test::Stream modules. It provides constructors and accessor generators.

Test::Stream::Hub
    Test::Stream::Hub is responsible for routing events to output handlers. This module also provides several hooks for testing tools.

Test::Stream::IPC
    Test::Stream::IPC is responsible for sending events between processes and threads. Test::Stream::IPC::Files is the default IPC driver.

Test::Stream::Stack
    The Test::Stream::Stack module manages a stack of hubs. In Test::Stream there can be several hubs and they all live on a stack like this. Events typically go to whichever hub is on top.

Test::Stream::State
    Test::Stream::State tracks a tests state, this includes the number of tests, the number of passes, and the number of failures.

Test::Stream::Sync
    The Test::Stream::Sync module is where global shared state is managed.

Test::Stream::Table
    Test::Stream::Table is used to generate nicely formatted tables. Test::Stream::Table::LineBreak breaks lines of text so that they fit in a table.

Test::Stream::Util
    Test::Stream::Util is a collection of general purpose functions used in almost every component of Test::Stream.

  ESSENTIAL EVENT TYPES

Test::Stream::Event::Bail
    Test::Stream::Event::Bail is an event that is issued when there is a catastrophic failure and all testing should end.

Test::Stream::Event::Diag
    Test::Stream::Event::Diag is used to output a message that should always be displayed.

Test::Stream::Event::Exception
    Test::Stream::Event::Exception is used when an exception is cought and needs to be reported.

Test::Stream::Event::Note
    Test::Stream::Event::Note is used to output an informational message that does not always need to be seen.

Test::Stream::Event::Ok
    Test::Stream::Event::Ok is used to represent a single pass or failure.

Test::Stream::Event::Plan
    Test::Stream::Event::Plan is used when a plan is set.

Test::Stream::Event::Subtest
    Test::Stream::Event::Subtest is used to run an isolated sub-group of tests.

Test::Stream::Event::Waiting
    Test::Stream::Event::Waiting is used by the IPC system to pass along a note that the primary process/thread is finished.

PRIMARY INTERFACE
These are the modules people workng with Test::Stream are most likely to interact with. This includes test authors, as well as tool authors.

Test::Stream
    Test::Stream is a loader that bootstraps the infrastructure, then loads the requested bundles and plugins.

Test::Stream::Bundle
    Test::Stream::Bundle is the base class for Test::Stream bundles.

Test::Stream::Plugin
    Test::Stream::Plugin is the base class for Test::Stream plugins.

BUNDLES
These are collections of plugins and options.

Test::Stream::Bundle::Classic
    Test::Stream::Bundle::Classic is a bundle that closely resembles Test::More.

Test::Stream::Bundle::V1
    Test::Stream::Bundle::V1 is the bundle used by the Test::Stream author in Test::Stream's test suite..

Test::Stream::Bundle::SpecTester
    Test::Stream::Bundle::SpecTester is used a lot on internal self-testing.

Test::Stream::Bundle::Tester
    Test::Stream::Bundle::Tester is useful when writing tests for testing tools.

PLUGINS

Test::Stream::Plugin::AuthorTest
    Test::Stream::Plugin::AuthorTest is used to write tests that should be run by a modules author, but are not required to run when installing the module from cpan.

Test::Stream::Plugin::BailOnFail
    Test::Stream::Plugin::BailOnFail will cause the test suite to bail out on the first failure.

Test::Stream::Plugin::CanFork
    Test::Stream::Plugin::CanFork is used to write tests that require fork, the tests are skipped if forking is not available.

Test::Stream::Plugin::CanThread
    Test::Stream::Plugin::CanThread is used to write tests that requre ithreads, the tests are skipped if threads are not available.

Test::Stream::Plugin::Capabilities
    Test::Stream::Plugin::Capabilities is an interface into Test::Stream::Capabilities.

Test::Stream::Plugin::Capture
    Test::Stream::Plugin::Capture can be used to intercept STDERR and STDOUT.

Test::Stream::Plugin::Class
    Test::Stream::Plugin::Class is used to specify what class is being tested.

Test::Stream::Plugin::Compare
    Test::Stream::Plugin::Compare is used for deep comparison. This is the code responsible for is() and like().

    This plugin also has the following infrastructure modules:

    Test::Stream::Compare::Array
    Test::Stream::Compare::Custom
    Test::Stream::Compare::Event
    Test::Stream::Compare::EventMeta
    Test::Stream::Compare::Hash
    Test::Stream::Compare::Meta
    Test::Stream::Compare::Object
    Test::Stream::Compare::Pattern
    Test::Stream::Compare::Ref
    Test::Stream::Compare::Regex
    Test::Stream::Compare::Scalar
    Test::Stream::Compare::Set
    Test::Stream::Compare::Value
    Test::Stream::Compare::Wildcard
    Test::Stream::Compare
    Test::Stream::Delta

Test::Stream::Plugin::Context
    Test::Stream::Plugin::Context is a plugin interface into the Test::Stream::Context module.

Test::Stream::Plugin::Core
    Test::Stream::Plugin::Core provides the most common and simple testing tools. This module is resposnible for functions like ok().

Test::Stream::Plugin::Defer
    Test::Stream::Plugin::Defer can be used to make assertions that are stored and run at a later time. Test::Stream::DeferredTests is used under the hood.

Test::Stream::Plugin::DieOnFail
    Test::Stream::Plugin::DieOnFail throw an exception on the first test failure.

Test::Stream::Plugin::Exception
    Test::Stream::Plugin::Exception has tools for intercepting and verifying exceptions.

Test::Stream::Plugin::ExitSummary
    Test::Stream::Plugin::ExitSummary provides useful deubgging information at the end of a test run.

Test::Stream::Plugin::Grab
    Test::Stream::Plugin::Grab can be used to intercept Test::Stream events without adding any scope.

Test::Stream::Plugin::IPC
    Test::Stream::Plugin::IPC is the interface into Test::Stream's IPC system.

Test::Stream::Plugin::Intercept
    Test::Stream::Plugin::Intercept is used to intercept Test::Stream events for testing purposes.

    The Test::Stream::Hub::Interceptor and Test::Stream::Hub::Interceptor::Terminator modules are used under the hood to achieve this functionality.

Test::Stream::Plugin::LoadPlugin
    Test::Stream::Plugin::LoadPlugin can be used to load plugins at run-time, primarily useful when testing plugins.

Test::Stream::Plugin::Mock
    Test::Stream::Plugin::Mock is the mocking library included with Test::Stream. It is based off of Mock::Quick.

    Test::Stream::Mock is used under the hood.

Test::Stream::Plugin::SRand
    Test::Stream::Plugin::SRand can be used to set the random seed to the current date. This is useful for making a test run consistent over any given day.

Test::Stream::Plugin::SkipWithout
    Test::Stream::Plugin::SkipWithout can be used to skip test files that require modules that may not be installed.

Test::Stream::Plugin::Spec
    Experimental: This plugin is still considered experimental. It is included in the dist because it is used heavily in the tests for Test::Stream. This is still considered experimental because the API is not completely finalized, but it does work well, is fully tested, and will not be removed.

    Test::Stream::Plugin::Spec provides RSPEC like functionality. This is essentially a much more advanced form of subtests.

    See also:

    Test::Stream::Workflow
    Test::Stream::Workflow::Unit
    Test::Stream::Workflow::Meta
    Test::Stream::Workflow::Runner
    Test::Stream::Workflow::Task

Test::Stream::Plugin::Subtest
    Test::Stream::Plugin::Subtest is used for Test::More style subtests.

    Test::Stream::Hub::Subtest is used under the hood.

Test::Stream::Plugin::TAP
    Test::Stream::Plugin::TAP is used to turn on TAP output.

Test::Stream::Plugin::UTF8
    Test::Stream::Plugin::UTF8 is used to turn on UTF8 globaly.

Test::Stream::Plugin::Warnings
    Test::Stream::Plugin::Warnings provides tools for intercepting and validating warnings.

SOURCE
The source code repository for Test::Stream can be found at http://github.com/Test-More/Test-Stream/.

MAINTAINERS

Chad Granum <exodist@cpan.org>

AUTHORS

Chad Granum <exodist@cpan.org>

COPYRIGHT
Copyright 2015 Chad Granum <exodist7@gmail.com>.

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/