Perl Diver 2.31
Main Environment Variables Perl Default Values Perl Config - Summary Perl Config - Full Installed Modules List Directory uptime Docs

Module Documentation
Details and documentation about a specific module, including version and documentation (if available). Note that while links to perldoc.com and search.cpan.org are provided, the module may be part of a larger distribution. If you reach a File Not Found page on either site, please try the parent module.

Test2::Workflow

Name Test2::Workflow
Version 0.000144
Located at /usr/local/share/perl5
File /usr/local/share/perl5/Test2/Workflow.pm
Is Core No
Search CPAN for this module Test2::Workflow
Documentation Test2::Workflow
Module Details Test2::Workflow


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. RSPEC is implemented using Test2::Workflow in the Test2::Tools::Spec manpage along with several extensions.


IMPORTANT CONCEPTS

BUILD

the Test2::Workflow::Build manpage

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

the Test2::Workflow::Runner manpage

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

TASK

the Test2::Workflow::Task manpage

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, level => $L)
$parsed = parse_args(args => \@args, caller => [caller($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 the Test2::Workflow::Build manpage 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
the Test2::Tools::Spec manpage 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


AUTHORS

Chad Granum <exodist@cpan.org>Chad Granum


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 Diver brought to you by ScriptSolutions.com © 1997- 2024