dwww Home | Manual pages | Find package

Test2::Workflow(3perl)  Perl Programmers Reference Guide Test2::Workflow(3perl)

NAME
       Test2::Workflow - A test workflow is a way of structuring tests using
       composable units.

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.

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.

   RUNNER
       Test2::Workflow::Runner

       A runner takes the composed tasks and executes them in the proper order.

   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.

       GROUP

       A group is a task that is composed of other tasks.

EXPORTS
       All exports are optional, you must request the ones you want.

       $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.

               {
                   # 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,

           Note  that  %args  is  completely  ignored  if the package build has
           already been initialized.

       $build = root_build($pkg)
           This will return the root build for the specified package.

       $build = current_build()
           This will return the build currently at the top of the  build  stack
           (or undef).

       $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.

           See parse_args() for details about argument processing.

SEE ALSO
       Test2::Tools::Spec
           Test2::Tools::Spec is an implementation of RSPEC using this library.

SOURCE
       The   source   code  repository  for  Test2-Workflow  can  be  found  at
       https://github.com/Test-More/Test2-Suite/.

MAINTAINERS
       Chad Granum <exodist@cpan.org>

AUTHORS
       Chad Granum <exodist@cpan.org>

COPYRIGHT
       Copyright 2018 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/

perl v5.40.1                       2026-08-30            Test2::Workflow(3perl)

Generated by dwww version 1.16 on Sat Oct 3 06:47:25 CEST 2026.