Test::S...ponents(3)

πŸ“¦
version 1.302027 Β· 2 versions
, in fedora 43

πŸ’– NAME πŸ’–

Test::Stream::Manual::Components β€” the whole vibe check on Test::Stream's components and modules, like a lil categorized tour of who does what. πŸ¦‹


✨ DESCRIPTION ✨

Okay bestie, so this doc? It's the categorization of all the modules that ship inside the Test-Stream distribution. Not only that, it also spills the basics on every single component and tells you which other modules they hook up with. πŸ’…

It's mainly useful for maintainers and test tool authors β€” like, if you're just here to write tests, you can vibe, but if you're building the tools, this is your girl. 🫢


🌸 ESSENTIAL INFRASTRUCTURE 🌸

These ones right here? The most critical. No cap, these modules are literally the beating heart of Test::Stream. πŸ’–

  • Test::Stream::Capabilities β€” detects what the current system can actually do, including whether it can fork or use threads. Capability check, slay. πŸ”₯
  • Test::Stream::Context β€” easily the most important module in all of Test::Stream, like not even close. The context object is the primary interface for tool authors. It ties everything together and makes sure events get to the correct hub. It's also the thing that makes it possible to report the filename and line numbers of errors. Main character energy fr. πŸ‘‘
  • Test::Stream::DebugInfo β€” used by the context object to track filename, line numbers, todo status, and other info that matters when reporting a test failure. The receipts keeper. πŸ“
  • Test::Stream::Event β€” the base class for all events, things like Ok, Diag, etc. The blueprint of the whole event fam. πŸŽ€
  • Test::Stream::Exporter β€” what Test::Stream uses to do export behavior wayyyyy beyond what Exporter can even handle. Iconic.
    • Test::Stream::Exporter::Meta β€” a key component of Test::Stream::Exporter. Little sibling doing big things. ✨
  • Test::Stream::Formatter::TAP β€” the TAP output formatter. Used whenever Test::Stream outputs TAP. The aesthetic department. πŸ’…
  • Test::Stream::HashBase β€” the object builder used in most Test::Stream modules. Provides constructors and accessor generators. Builds the whole fit. 🌈
  • Test::Stream::Hub β€” responsible for routing events to output handlers. Also provides several hooks for testing tools. The traffic controller bestie. 🚦
  • Test::Stream::IPC β€” responsible for sending events between processes and threads. Test::Stream::IPC::Files is the default IPC driver. πŸ“¬
  • Test::Stream::Stack β€” 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. Stacked, literally. πŸ₯ž
  • Test::Stream::State β€” tracks a test's state, which includes the number of tests, the number of passes, and the number of failures. Keeping score, periodt. πŸ“Š
  • Test::Stream::Sync β€” where global shared state is managed. 🧚
  • Test::Stream::Table β€” used to generate nicely formatted tables. Test::Stream::Table::LineBreak breaks lines of text so that they fit in a table. Pretty AND functional. πŸŽ€
  • Test::Stream::Util β€” a collection of general purpose functions used in almost every component of Test::Stream. The utility belt. πŸ¦‹

πŸ’œ ESSENTIAL EVENT TYPES πŸ’œ

  • Test::Stream::Event::Bail β€” an event issued when there's a catastrophic failure and all testing should end. 🚨 The "we're done here" event.
  • Test::Stream::Event::Diag β€” used to output a message that should always be displayed. You're gonna see it, no escape. πŸ’€
  • Test::Stream::Event::Exception β€” used when an exception is caught and needs to be reported. πŸ“£
  • Test::Stream::Event::Note β€” used to output an informational message that does not always need to be seen. Casual little whisper. πŸ™ˆ
  • Test::Stream::Event::Ok β€” represents a single pass or failure. The moment of truth. βœ…
  • Test::Stream::Event::Plan β€” used when a plan is set. πŸ“‹
  • Test::Stream::Event::Subtest β€” used to run an isolated sub-group of tests. Tests within tests, inception core. πŸŒ€
  • Test::Stream::Event::Waiting β€” used by the IPC system to pass along a note that the primary process/thread is finished. Like a "brb done" text. ⏳

πŸ‘‘ PRIMARY INTERFACE πŸ‘‘

These are the modules that people working with Test::Stream are most likely to interact with. That means test authors and tool authors, both. You. Yes you. 🫡

  • Test::Stream β€” a loader that bootstraps the infrastructure, then loads the requested bundles and plugins. The opener. 🎬
  • Test::Stream::Bundle β€” the base class for Test::Stream bundles. πŸ“¦
  • Test::Stream::Plugin β€” the base class for Test::Stream plugins. πŸ”Œ

πŸŽ€ BUNDLES πŸŽ€

These are collections of plugins and options. Bundle haul, basically. πŸ›οΈ

  • Test::Stream::Bundle::Classic β€” a bundle that closely resembles Test::More. For the ones feeling nostalgic. πŸ’­
  • Test::Stream::Bundle::V1 β€” the bundle used by the Test::Stream author in Test::Stream's test suite. (The original text has a double period here, so Test::Stream's test suite.. β€” leaving that typo exactly as it is, bestie. Not my typo, not my problem. πŸ’…)
  • Test::Stream::Bundle::SpecTester β€” used a lot on internal self-testing. πŸ”
  • Test::Stream::Bundle::Tester β€” useful when writing tests for testing tools. Meta af. πŸͺž

🌈 PLUGINS 🌈

  • Test::Stream::Plugin::AuthorTest β€” used to write tests that should be run by a module's author, but are not required to run when installing the module from cpan. Author-only vibe. ✍️
  • Test::Stream::Plugin::BailOnFail β€” will cause the test suite to bail out on the first failure. One strike, we out. πŸšͺ
  • Test::Stream::Plugin::CanFork β€” used to write tests that require fork; the tests are skipped if forking is not available. No fork, no problem, we skip. 🍴
  • Test::Stream::Plugin::CanThread β€” used to write tests that require ithreads; the tests are skipped if threads are not available. 🧡
  • Test::Stream::Plugin::Capabilities β€” an interface into Test::Stream::Capabilities. πŸ› οΈ
  • Test::Stream::Plugin::Capture β€” can be used to intercept STDERR and STDOUT. Snatched. πŸ“Έ
  • Test::Stream::Plugin::Class β€” used to specify what class is being tested. 🎯
  • Test::Stream::Plugin::Compare β€” used for deep comparison. This is the code responsible for is() and like(). The heavy lifter fr fr. πŸ’ͺ
    • 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 β€” a plugin interface into the Test::Stream::Context module. πŸŒ€
  • Test::Stream::Plugin::Core β€” provides the most common and simple testing tools. This module is responsible for functions like ok(). The basics, but make it iconic. ⭐
  • 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. Save it for later energy. ⏰
  • Test::Stream::Plugin::DieOnFail β€” throws an exception on the first test failure. Dramatic exit, but valid. πŸ’€
  • Test::Stream::Plugin::Exception β€” has tools for intercepting and verifying exceptions. πŸ”
  • Test::Stream::Plugin::ExitSummary β€” provides useful debugging information at the end of a test run. The outro. 🎀
  • Test::Stream::Plugin::Grab β€” can be used to intercept Test::Stream events without adding any scope. No scope, all grab. 🀲
  • Test::Stream::Plugin::IPC β€” the interface into Test::Stream's IPC system. πŸ“‘
  • Test::Stream::Plugin::Intercept β€” 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 β€” can be used to load plugins at run-time, primarily useful when testing plugins. Plugins loading plugins, so meta. πŸͺ†
  • Test::Stream::Plugin::Mock β€” 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 β€” 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. Same chaos every day, love that for us. 🎲
  • Test::Stream::Plugin::SkipWithout β€” can be used to skip test files that require modules that may not be installed. Not here, not today. ⏭️
  • 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. It 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 β€” used for Test::More style subtests. 🧩
    • Test::Stream::Hub::Subtest is used under the hood. πŸ”©
  • Test::Stream::Plugin::TAP β€” used to turn on TAP output. πŸ“Ί
  • Test::Stream::Plugin::UTF8 β€” used to turn on UTF8 globally. 🌍✨
  • 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/. Go lurk, bestie. πŸ‘©β€πŸ’»


πŸ’œ MAINTAINERS πŸ’œ

Chad Granum <exodist@cpan.org>


🌸 AUTHORS 🌸

Chad Granum <exodist@cpan.org>

Okay bestie, legal era, but make it cute. πŸ’…

This whole thing is copyright 2015 Chad Granum <exodist7@gmail.com>. Give the man his flowers, he earned them. 🌸


It's free software, fr fr β€” you can redistribute it and/or modify it under the same terms as Perl itself. That's the whole vibe. No cap, no weird extra rules, just Perl's terms.

Wanna read the actual fine print? It lives at http://dev.perl.org/licenses/ β€” go peek if you're that kind of girlie (and honestly, respect 🫢).

And that's the page, bestie!! ✨ You made it to the end. This was pulled from the User Contributed Perl Documentation that ships with perl v5.42.0, dated 2025-07-25 β€” like, that's the snapshot you're reading right now. Go write some tests, you absolute icon. πŸ‘‘πŸ¦‹πŸ’–

πŸ“¦ where this page comes from