Test2::Workflow(3)
β¨ Test2::Workflow(3) β¨
okay so bestie, welcome to the Test2::Workflow(3) page β it's from the User Contributed Perl Documentation and honestly? it's giving structure, it's giving composable units, it's giving main character energy for your test suite π
πΈ NAME
Test2::Workflow β a test workflow is a way of structuring tests using composable units. periodt.
π¦ DESCRIPTION
A test workflow is a way of structuring tests using composable units. A well known example of a test workflow is RSPEC <http://rspec.info/>. RSPEC is implemented using Test2::Workflow in Test2::Tools::Spec along with several extensions. no cap, that's literally the whole vibe π₯
π IMPORTANT CONCEPTS
π BUILD
Test2::Workflow::Build
A Build is used to compose tasks. Usually a build object is pushed to the stack before running code that adds tasks to the build. Once the build sub is complete the build is popped and returned. Usually a build is converted into a root task or task group. it's like a little stack sandwich, iconic behavior π₯ͺ
π RUNNER
Test2::Workflow::Runner
A runner takes the composed tasks and executes them in the proper order. she's the one actually running the show, fr fr.
β TASK
Test2::Workflow::Task
A task is a unit of work to accomplish. There are 2 main types of task.
π ACTION
An action is the most simple unit used in composition. An action is essentially a name and a codeblock to run. short, sweet, slays every time.
π GROUP
A group is a task that is composed of other tasks. it's giving found family, it's giving task nesting π«Ά
β¨ EXPORTS β¨
All exports are optional, you must request the ones you want. (no surprise pop-ins here, we respect boundaries π )
$parsed = parse_args(args => \@args)$parsed = parse_args(args => \@args, level => $L)$parsed = parse_args(args => \@args, caller => [caller($L)])
This will parse a "typical" task builders arguments. The @args array MUST contain a name (plain scalar containing text) and also a single CODE reference. The @args array MAY also contain any quantity of line numbers or hashrefs. The resulting data structure will be a single hashref with all the provided hashrefs squashed together, and the 'name', 'code', 'lines' and 'frame' keys set from other arguments. like a little data smoothie, obsessed π
{
# All hashrefs from @args get squashed together:
%squashed_input_hashref_data,
# @args must have exactly 1 plaintext scalar that is not a number, it
# is considered the name:
name => 'name from input args'
# Integer values are treated as line numbers
lines => [ 35, 44 ],
# Exactly 1 coderef must be provided in @args:
code => \&some_code,
# 'frame' contains the 'caller' data. This may be passed in directly,
# obtained from the 'level' parameter, or automatically deduced.
frame => ['A::Package', 'a_file.pm', 42, ...],
}
$build = init_root($pkg, %args)
This will initialize (or return the existing) a build for the specified package. %args get passed into the Test2::Workflow::Build constructor. This uses the following defaults (which can be overridden using %args):
name => $pkg,
flat => 1,
iso => 0,
async => 0,
is_root => 1,
β οΈ heads up bestie: %args is completely ignored if the package build has already been initialized. like, she's already made her decision, respect it π
$build = root_build($pkg)
This will return the root build for the specified package. the origin story, the blueprint, the source π
$build = current_build()
This will return the build currently at the top of the build stack (or undef). whoever's holding the aux cord rn π§
$build = build($name, \%params, sub { ... })
This will push a new build object onto the build stash then run the provided codeblock. Once the codeblock has finished running the build will be popped off the stack and returned. very push-pop-glamour β¨
See parse_args() for details about argument processing. iykyk.
π SEE ALSO
Test2::Tools::SpecβTest2::Tools::Specis an implementation of RSPEC using this library. the whole reason we're here honestly π
π₯ SOURCE
The source code repository for Test2-Workflow can be found at https://github.com/Test-More/test-more/. go peek, it's cute.
π§ MAINTAINERS
Chad Granum <exodist@cpan.org>
πΈ AUTHORS
Chad Granum <exodist@cpan.org>
π COPYRIGHT
Copyright 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/
π« and that's the page, bestie! this wasperl v5.42.0, dated2025-07-28, and it's theTest2::Workflow(3)page β go forth and structure those tests, slay, mwah π«Άπβ¨
π¦ where this page comes from
- opensuse-leap 16.0: perl-Test-Simple 1.302214-bp160.1.2 Β· Artistic-1.0 OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms