Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Test2::Workflow(3)    User Contributed Perl Documentation   Test2::Workflow(3)

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.32.0			  2020-08-17		    Test2::Workflow(3)

NAME | DESCRIPTION | IMPORTANT CONCEPTS | EXPORTS | SEE ALSO | SOURCE | MAINTAINERS | AUTHORS | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Test2::Workflow&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help