NAME

Test2::Workflow::Unit - Representation of a workflow unit.

*** EXPERIMENTAL ***

This distribution is experimental, anything can change at any time!

DESCRIPTION

This package is a single unit of work to be done in a workflow. The unit may contain a codeblock, or many child units.

METHODS

$bool = $unit->contains($name)
$bool = $unit->contains($line)
$bool = $unit->contains("$file $line)

Check if the unit contains (or is) a unit with the given specification. The specification may be a line number, a filename + line number, or a unit name. This will return true if either the unit, or one of the child units, matches.

$unit->add_modify($other_unit)
$unit->add_buildup($other_unit)
$unit->add_teardown($other_unit)

These add $other_unit as a child unit. The child is added to the group specified in the method name.

$unit->add_primary($other_unit)

Add a primary unit child. Note: The primary unit is either an arrayref of other units, or a single coderef. In cases where the primary is a coderef, this will fail badly.

$unit->add_post(sub { ... })

Add a post-build callback.

$unit->do_post()

Run (and remove) the post-build callbacks.

$dbg = $unit->debug

Generate an Test2::Debug object for this unit.

$ctx = $unit->context

Generate a context representing the scope of the unit. Note: this context is non-canonical.

$name = $unit->name

Get the unit name.

$hr = $unit->meta

Get the meta hashref, this contains things like 'todo' and 'skip'.

$type = $unit->type

Get the unit type.

$bool = $unit->wrap

True if the codeblock for this unit is a wrap (around_all, around_each, etc).

$hr = $unit->stash

General purpose stash for use in plugins and extensions.

$pkg = $unit->package

Package for the unit.

$file = $unit->file

Filename for the unit

$start = $unit->start_line

Starting line for the unit.

$end = $unit->end_line

Ending line number for the unit. Note: This can be set to an integer, or to the string 'EOF'.

$unit->adjust_lines

This will check all child unit bounds, if they fall outside the parents bounds then the parent will be adjusted.

$ar = $unit->post
$ar = $unit->modify
$ar = $unit->buildup
$ar = $unit->teardown

Access to the arrayrefs for the specific child types.

$code_or_ar = $unit->primary

Get the primary, which may be an arrayref of other units, or a single coderef.

SOURCE

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

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/