Venus::Test

Test Class

Test Class for Perl 5

function: test

method: collect method: collect_data_for_abstract method: collect_data_for_attribute method: collect_data_for_authors method: collect_data_for_description method: collect_data_for_encoding method: collect_data_for_error method: collect_data_for_example method: collect_data_for_feature method: collect_data_for_function method: collect_data_for_includes method: collect_data_for_inherits method: collect_data_for_integrates method: collect_data_for_layout method: collect_data_for_libraries method: collect_data_for_license method: collect_data_for_message method: collect_data_for_metadata method: collect_data_for_method method: collect_data_for_name method: collect_data_for_operator method: collect_data_for_partials method: collect_data_for_project method: collect_data_for_signature method: collect_data_for_synopsis method: collect_data_for_tagline method: collect_data_for_version method: data method: done method: execute method: execute_test_for_abstract method: execute_test_for_attribute method: execute_test_for_authors method: execute_test_for_description method: execute_test_for_encoding method: execute_test_for_error method: execute_test_for_example method: execute_test_for_feature method: execute_test_for_function method: execute_test_for_includes method: execute_test_for_inherits method: execute_test_for_integrates method: execute_test_for_layout method: execute_test_for_libraries method: execute_test_for_license method: execute_test_for_message method: execute_test_for_metadata method: execute_test_for_method method: execute_test_for_name method: execute_test_for_operator method: explain method: fail method: for method: like method: more method: okay method: okay_can method: okay_isa method: pass method: perform method: perform_test_for_abstract method: perform_test_for_attribute method: perform_test_for_authors method: perform_test_for_description method: perform_test_for_encoding method: perform_test_for_error method: perform_test_for_example method: perform_test_for_feature method: perform_test_for_function method: perform_test_for_includes method: perform_test_for_inherits method: perform_test_for_integrates method: perform_test_for_layout method: perform_test_for_libraries method: perform_test_for_license method: perform_test_for_message method: perform_test_for_metadata method: perform_test_for_method method: perform_test_for_name method: perform_test_for_operator method: perform_test_for_partials method: perform_test_for_project method: perform_test_for_signature method: perform_test_for_synopsis method: perform_test_for_tagline method: perform_test_for_version method: present method: present_data_for_abstract method: present_data_for_attribute method: present_data_for_authors method: present_data_for_description method: present_data_for_encoding method: present_data_for_error method: present_data_for_example method: present_data_for_feature method: present_data_for_function method: present_data_for_includes method: present_data_for_inherits method: present_data_for_integrates method: present_data_for_layout method: present_data_for_libraries method: present_data_for_license method: present_data_for_message method: present_data_for_metadata method: present_data_for_method method: present_data_for_name method: present_data_for_operator method: render method: same method: skip

package main;

use Venus::Test;

my $test = Venus::Test->new('t/Venus_Test.t');

# $test->for('name');

# $test->for('tagline');

# $test->for('abstract');

# $test->for('synopsis');

# $test->done;

This package aims to provide a standard for documenting Venus derived software projects, a framework writing tests, test automation, and documentation generation.

Venus::Kind

Venus::Role::Buildable

The file attribute is read-write, accepts (string) values, and is required.

file(string $data) (string)

{ since => '3.55', }

The test function is exported automatically and returns a Venus::Test object for the test file given.

test(string $file) (Venus::Test)

{ since => '0.09', }

=example-1 test

package main;

use Venus::Test;

my $test = test 't/Venus_Test.t';

# bless(..., "Venus::Test")

The collect method dispatches to the collect_data_for_${name} method indictated by the first argument and returns the result. Returns an arrayref in scalar context, and a list in list context.

collect(string $name, any @args) (any)

{ since => '3.55', }

The collect_data_for_abstract method uses "data" to fetch data for the abstract section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_abstract() (arrayref)

{ since => '3.55', }

The collect_data_for_attribute method uses "data" to fetch data for the attribute $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_attribute(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_authors method uses "data" to fetch data for the authors section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_authors() (arrayref)

{ since => '3.55', }

The collect_data_for_description method uses "data" to fetch data for the description section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_description() (arrayref)

{ since => '3.55', }

The collect_data_for_encoding method uses "data" to fetch data for the encoding section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_encoding() (arrayref)

{ since => '3.55', }

The collect_data_for_error method uses "data" to fetch data for the error $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_error(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_example method uses "data" to fetch data for the example-$number $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_example(number $numberm string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_feature method uses "data" to fetch data for the feature $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_feature(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_function method uses "data" to fetch data for the function $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_function(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_includes method uses "data" to fetch data for the includes section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_includes() (arrayref)

{ since => '3.55', }

The collect_data_for_inherits method uses "data" to fetch data for the inherits section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_inherits() (arrayref)

{ since => '3.55', }

The collect_data_for_integrates method uses "data" to fetch data for the integrates section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_integrates() (arrayref)

{ since => '3.55', }

The collect_data_for_layout method uses "data" to fetch data for the layout section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_layout() (arrayref)

{ since => '3.55', }

The collect_data_for_libraries method uses "data" to fetch data for the libraries section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_libraries() (arrayref)

{ since => '3.55', }

The collect_data_for_license method uses "data" to fetch data for the license section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_license() (arrayref)

{ since => '3.55', }

The collect_data_for_message method uses "data" to fetch data for the message $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_message(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_metadata method uses "data" to fetch data for the metadata $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_metadata(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_method method uses "data" to fetch data for the method $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_method(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_name method uses "data" to fetch data for the name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_name() (arrayref)

{ since => '3.55', }

The collect_data_for_operator method uses "data" to fetch data for the operator $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_operator(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_partials method uses "data" to fetch data for the partials section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_partials() (arrayref)

{ since => '3.55', }

The collect_data_for_project method uses "data" to fetch data for the project section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_project() (arrayref)

{ since => '3.55', }

The collect_data_for_signature method uses "data" to fetch data for the signature $name section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_signature(string $name) (arrayref)

{ since => '3.55', }

The collect_data_for_synopsis method uses "data" to fetch data for the synopsis section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_synopsis() (arrayref)

{ since => '3.55', }

The collect_data_for_tagline method uses "data" to fetch data for the tagline section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_tagline() (arrayref)

{ since => '3.55', }

The collect_data_for_version method uses "data" to fetch data for the version section and returns the data. Returns an arrayref in scalar context, and a list in list context.

collect_data_for_version() (arrayref)

{ since => '3.55', }

The data method returns a Venus::Data object using "file" for parsing the test specification.

data() (Venus::Data)

{ since => '3.55', }

The done method dispatches to the "done_testing" in Test::More operation and returns the result.

done() (any)

{ since => '3.55', }

The execute method dispatches to the execute_data_for_${name} method indictated by the first argument and returns the result. Returns an arrayref in scalar context, and a list in list context.

execute(string $name, any @args) (boolean)

{ since => '3.55', }

The execute_test_for_abstract method tests a documentation block for the abstract section and returns the result.

execute_test_for_abstract() (arrayref)

{ since => '3.55', }

The execute_test_for_attribute method tests a documentation block for the attribute $name section and returns the result.

execute_test_for_attribute(string $name) (arrayref)

{ since => '3.55', }

The execute_test_for_authors method tests a documentation block for the authors section and returns the result.

execute_test_for_authors() (arrayref)

{ since => '3.55', }

The execute_test_for_description method tests a documentation block for the description section and returns the result.

execute_test_for_description() (arrayref)

{ since => '3.55', }

The execute_test_for_encoding method tests a documentation block for the encoding section and returns the result.

execute_test_for_encoding() (arrayref)

{ since => '3.55', }

The execute_test_for_error method tests a documentation block for the error $name section and returns the result.

execute_test_for_error(string $name) (arrayref)

{ since => '3.55', }

The execute_test_for_example method tests a documentation block for the example-$number $name section and returns the result.

execute_test_for_example(number $numberm string $name) (arrayref)

{ since => '3.55', }

The execute_test_for_feature method tests a documentation block for the feature $name section and returns the result.

execute_test_for_feature(string $name) (arrayref)

{ since => '3.55', }

=example-1 execute_test_for_feature

# =feature noop
#
# This package is no particularly useful features.
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $execute_test_for_feature = $test->execute_test_for_feature('noop');

# true

The execute_test_for_function method tests a documentation block for the function $name section and returns the result.

execute_test_for_function(string $name) (arrayref)

{ since => '3.55', }

=example-1 execute_test_for_function

# =function eg
#
# The eg function returns a new instance of Example.
#
# =cut
#
# =example-1 name
#
#   # given: synopsis
#
#   my $example = eg();
#
#   # "..."
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $execute_test_for_function = $test->execute_test_for_function('eg');

# true

The execute_test_for_includes method tests a documentation block for the includes section and returns the result.

execute_test_for_includes() (arrayref)

{ since => '3.55', }

The execute_test_for_inherits method tests a documentation block for the inherits section and returns the result.

execute_test_for_inherits() (arrayref)

{ since => '3.55', }

=example-1 execute_test_for_inherits

# =inherits
#
# Venus::Core::Class
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $execute_test_for_inherits = $test->execute_test_for_inherits;

# true

The execute_test_for_integrates method tests a documentation block for the integrates section and returns the result.

execute_test_for_integrates() (arrayref)

{ since => '3.55', }

The execute_test_for_layout method tests a documentation block for the layout section and returns the result.

execute_test_for_layout() (arrayref)

{ since => '3.55', }

The execute_test_for_libraries method tests a documentation block for the libraries section and returns the result.

execute_test_for_libraries() (arrayref)

{ since => '3.55', }

=example-1 execute_test_for_libraries

# =libraries
#
# Venus::Check
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $execute_test_for_libraries = $test->execute_test_for_libraries;

# true

The execute_test_for_license method tests a documentation block for the license section and returns the result.

execute_test_for_license() (arrayref)

{ since => '3.55', }

The execute_test_for_message method tests a documentation block for the message $name section and returns the result.

execute_test_for_message(string $name) (arrayref)

{ since => '3.55', }

The execute_test_for_metadata method tests a documentation block for the metadata $name section and returns the result.

execute_test_for_metadata(string $name) (arrayref)

{ since => '3.55', }

=example-1 execute_test_for_metadata

# =method prepare
#
# The prepare method prepares for execution.
#
# =cut
#
# =metadata prepare
#
# {since => 1.2.3}
#
# =cut
#
# =example-1 prepare
#
#   # given: synopsis
#
#   my $prepare = $example->prepare;
#
#   # "..."
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $execute_test_for_metadata = $test->execute_test_for_metadata('prepare');

# true

The execute_test_for_method method tests a documentation block for the method $name section and returns the result.

execute_test_for_method(string $name) (arrayref)

{ since => '3.55', }

=example-1 execute_test_for_method

# =method execute
#
# The execute method executes the logic.
#
# =cut
#
# =metadata execute
#
# {since => 1.2.3}
#
# =cut
#
# =example-1 execute
#
#   # given: synopsis
#
#   my $execute = $example->execute;
#
#   # "..."
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $execute_test_for_method = $test->execute_test_for_method('execute');

# true

The execute_test_for_name method tests a documentation block for the name section and returns the result.

execute_test_for_name() (arrayref)

{ since => '3.55', }

The execute_test_for_operator method tests a documentation block for the operator $name section and returns the result.

execute_test_for_operator(string $name) (arrayref)

{ since => '3.55', }

The explain method dispatches to the "explain" in Test::More operation and returns the result.

explain(any @args) (any)

{ since => '3.55', }

The fail method dispatches to the "ok" in Test::More operation expecting the first argument to be falsy and returns the result.

fail(any $data, string $description) (any)

{ since => '3.55', }

The for method dispatches to the "execute" method using the arguments provided within a subtest and returns the invocant.

for(any @args) (Venus::Test)

{ since => '3.55', }

The like method dispatches to the "like" in Test::More operation and returns the result.

like(string $data, string | Venus::Regexp $match, string $description) (any)

{ since => '3.55', }

The more method dispatches to the Test::More method specified by the first argument and returns its result.

more(any @args) (Venus::Test)

{ since => '3.55', }

The okay method dispatches to the "ok" in Test::More operation and returns the result.

okay(any $data, string $description) (any)

{ since => '3.55', }

The okay_can method dispatches to the "can_ok" in Test::More operation and returns the result.

okay_can(string $name, string @args) (any)

{ since => '3.55', }

The okay_isa method dispatches to the "isa_ok" in Test::More operation and returns the result.

okay_isa(string $name, string $base) (any)

{ since => '3.55', }

The pass method dispatches to the "ok" in Test::More operation expecting the first argument to be truthy and returns the result.

pass(any $data, string $description) (any)

{ since => '3.55', }

The perform method dispatches to the perform_data_for_${name} method indictated by the first argument and returns the result. Returns an arrayref in scalar context, and a list in list context.

perform(string $name, any @args) (boolean)

{ since => '3.55', }

The perform_data_for_abstract method performs an overridable test for the abstract section and returns truthy or falsy.

perform_test_for_abstract(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_attribute method performs an overridable test for the attribute $name section and returns truthy or falsy.

perform_test_for_attribute(string $name, arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_authors method performs an overridable test for the authors section and returns truthy or falsy.

perform_test_for_authors(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_description method performs an overridable test for the description section and returns truthy or falsy.

perform_test_for_description(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_encoding method performs an overridable test for the encoding section and returns truthy or falsy.

perform_test_for_encoding(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_error method performs an overridable test for the error $name section and returns truthy or falsy.

perform_test_for_error(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_example method performs an overridable test for the example-$number $name section and returns truthy or falsy.

perform_test_for_example(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_feature method performs an overridable test for the feature $name section and returns truthy or falsy.

perform_test_for_feature(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_function method performs an overridable test for the function $name section and returns truthy or falsy.

perform_test_for_function(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_includes method performs an overridable test for the includes section and returns truthy or falsy.

perform_test_for_includes(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_inherits method performs an overridable test for the inherits section and returns truthy or falsy.

perform_test_for_inherits(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_integrates method performs an overridable test for the integrates section and returns truthy or falsy.

perform_test_for_integrates(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_layout method performs an overridable test for the layout section and returns truthy or falsy.

perform_test_for_layout(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_libraries method performs an overridable test for the libraries section and returns truthy or falsy.

perform_test_for_libraries(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_license method performs an overridable test for the license section and returns truthy or falsy.

perform_test_for_license(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_message method performs an overridable test for the message $name section and returns truthy or falsy.

perform_test_for_message(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_metadata method performs an overridable test for the metadata $name section and returns truthy or falsy.

perform_test_for_metadata(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_method method performs an overridable test for the method $name section and returns truthy or falsy.

perform_test_for_method(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_name method performs an overridable test for the name section and returns truthy or falsy.

perform_test_for_name(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_operator method performs an overridable test for the operator $name section and returns truthy or falsy.

perform_test_for_operator(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_partials method performs an overridable test for the partials section and returns truthy or falsy.

perform_test_for_partials(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_project method performs an overridable test for the project section and returns truthy or falsy.

perform_test_for_project(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_signature method performs an overridable test for the signature $name section and returns truthy or falsy.

perform_test_for_signature(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_synopsis method performs an overridable test for the synopsis section and returns truthy or falsy.

perform_test_for_synopsis(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_tagline method performs an overridable test for the tagline section and returns truthy or falsy.

perform_test_for_tagline(arrayref $data) (boolean)

{ since => '3.55', }

The perform_data_for_version method performs an overridable test for the version section and returns truthy or falsy.

perform_test_for_version(arrayref $data) (boolean)

{ since => '3.55', }

The present method dispatches to the present_data_for_${name} method indictated by the first argument and returns the result. Returns an arrayref in scalar context, and a list in list context.

present(string $name, any @args) (string)

{ since => '3.55', }

NAME

Venus::Test - Test Class

The present_data_for_abstract method builds a documentation block for the abstract section and returns it as a string.

present_data_for_abstract() (arrayref)

{ since => '3.55', }

ABSTRACT

Example Test Documentation

The present_data_for_attribute method builds a documentation block for the attribute $name section and returns it as a string.

present_data_for_attribute(string $name) (arrayref)

{ since => '3.55', }

name

The name attribute is read-write, optional, and holds a string.

name example 1
# given: synopsis

my $name = $example->name;

# "..."

The present_data_for_authors method builds a documentation block for the authors section and returns it as a string.

present_data_for_authors() (arrayref)

{ since => '3.55', }

AUTHORS

Awncorp, awncorp@cpan.org

The present_data_for_description method builds a documentation block for the description section and returns it as a string.

present_data_for_description() (arrayref)

{ since => '3.55', }

DESCRIPTION

This package provides an example class.

The present_data_for_encoding method builds a documentation block for the encoding section and returns it as a string.

present_data_for_encoding() (arrayref)

{ since => '3.55', }

The present_data_for_error method builds a documentation block for the error $name section and returns it as a string.

present_data_for_error(string $name) (arrayref)

{ since => '3.55', }

error: error_on_unknown

This package may raise an error_on_unknown error.

example 1

# given: synopsis

my $error = $example->catch('error', {
  with => 'error_on_unknown',
});

# "..."

=back|;

$result
});

The present_data_for_example method builds a documentation block for the example-$number $name section and returns it as a string.

present_data_for_example(number $numberm string $name) (arrayref)

{ since => '3.55', }

name example 1
# given: synopsis

my $name = $example->name;

# "..."

=back|;

$result
});

The present_data_for_feature method builds a documentation block for the feature $name section and returns it as a string.

present_data_for_feature(string $name) (arrayref)

{ since => '3.55', }

=example-1 present_data_for_feature

# =feature noop
#
# This package is no particularly useful features.
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $present_data_for_feature = $test->present_data_for_feature('noop');

# =over 4
#
# =item noop
#
# This package is no particularly useful features.
#
# =back
noop

This package is no particularly useful features.

=back';

$result
});

The present_data_for_function method builds a documentation block for the function $name section and returns it as a string.

present_data_for_function(string $name) (arrayref)

{ since => '3.55', }

=example-1 present_data_for_function

# =function eg
#
# The eg function returns a new instance of Example.
#
# =cut
#
# =example-1 name
#
#   # given: synopsis
#
#   my $example = eg();
#
#   # "..."
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $present_data_for_function = $test->present_data_for_function('eg');

# =head2 eg
#
# The eg function returns a new instance of Example.
#
# =cut

eg

The eg function returns a new instance of Example.

The present_data_for_includes method builds a documentation block for the includes section and returns it as a string.

present_data_for_includes() (arrayref)

{ since => '3.55', }

The present_data_for_inherits method builds a documentation block for the inherits section and returns it as a string.

present_data_for_inherits() (arrayref)

{ since => '3.55', }

=example-1 present_data_for_inherits

# =inherits
#
# Venus::Core::Class
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $present_data_for_inherits = $test->present_data_for_inherits;

# =head1 INHERITS
#
# This package inherits behaviors from:
#
# L<Venus::Core::Class>
#
# =cut

INHERITS

This package inherits behaviors from:

Venus::Core::Class

The present_data_for_integrates method builds a documentation block for the integrates section and returns it as a string.

present_data_for_integrates() (arrayref)

{ since => '3.55', }

INTEGRATES

This package integrates behaviors from:

Venus::Role::Catchable

Venus::Role::Throwable

The present_data_for_layout method builds a documentation block for the layout section and returns it as a string.

present_data_for_layout() (arrayref)

{ since => '3.55', }

The present_data_for_libraries method builds a documentation block for the libraries section and returns it as a string.

present_data_for_libraries() (arrayref)

{ since => '3.55', }

=example-1 present_data_for_libraries

# =libraries
#
# Venus::Check
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $present_data_for_libraries = $test->present_data_for_libraries;

# =head1 LIBRARIES
#
# This package uses type constraints from:
#
# L<Venus::Check>
#
# =cut

LIBRARIES

This package uses type constraints from:

Venus::Check

The present_data_for_license method builds a documentation block for the license section and returns it as a string.

present_data_for_license() (arrayref)

{ since => '3.55', }

LICENSE

No license granted.

The present_data_for_message method builds a documentation block for the message $name section and returns it as a string.

present_data_for_message(string $name) (arrayref)

{ since => '3.55', }

accept

The accept message represents acceptance.

example 1

# given: synopsis

my $accept = $example->accept;

# "..."

=back';

$result
});

The present_data_for_metadata method builds a documentation block for the metadata $name section and returns it as a string.

present_data_for_metadata(string $name) (arrayref)

{ since => '3.55', }

=example-1 present_data_for_metadata

# =method prepare
#
# The prepare method prepares for execution.
#
# =cut
#
# =metadata prepare
#
# {since => 1.2.3}
#
# =cut
#
# =example-1 prepare
#
#   # given: synopsis
#
#   my $prepare = $example->prepare;
#
#   # "..."
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $present_data_for_metadata = $test->present_data_for_metadata('prepare');

# undef

The present_data_for_method method builds a documentation block for the method $name section and returns it as a string.

present_data_for_method(string $name) (arrayref)

{ since => '3.55', }

=example-1 present_data_for_method

# =method execute
#
# The execute method executes the logic.
#
# =cut
#
# =metadata execute
#
# {since => 1.2.3}
#
# =cut
#
# =example-1 execute
#
#   # given: synopsis
#
#   my $execute = $example->execute;
#
#   # "..."
#
# =cut

package main;

use Venus::Test 'test';

my $test = test 't/path/pod/example';

my $present_data_for_method = $test->present_data_for_method('execute');

# =head2 execute
#
#   execute() (boolean)
#
# The execute method executes the logic.
#
# I<Since C<1.2.3>>
#
# =over 4
#
# =item execute example 1
#
#   # given: synopsis
#
#   my $execute = $example->execute;
#
#   # "..."
#
# =back
#
# =cut

execute

execute() (boolean)

The execute method executes the logic.

Since 1.2.3

execute example 1
# given: synopsis

my $execute = $example->execute;

# "..."

The present_data_for_name method builds a documentation block for the name section and returns it as a string.

present_data_for_name() (arrayref)

{ since => '3.55', }

NAME

Example - Example Class

The present_data_for_operator method builds a documentation block for the operator $name section and returns it as a string.

present_data_for_operator(string $name) (arrayref)

{ since => '3.55', }

operation: ("")

This package overloads the "" operator.

example 1

# given: synopsis

my $string = "$example";

# "..."

=back';

$result
});

The render method reads the test specification and generates perlpod documentation and returns a Venus::Path object for the filename provided.

render(string $file) (Venus::Path)

{ since => '3.55', }

The same method dispatches to the "is_deeply" in Test::More operation and returns the result.

same(any $data1, any $data2, string $description) (any)

{ since => '3.55', }

The skip method dispatches to the "skip" in Test::More operation with the plan_all option and returns the result.

skip(string $description, boolean | coderef $value) (any)

{ since => '3.55', }

# [required]

=name
=abstract
=tagline
=synopsis
=description

# [optional]

=includes
=libraries
=inherits
=integrates

# [optional; repeatable]

=attribute $name
=signature $name
=example-$number $name # [repeatable]

# [optional; repeatable]

=function $name
=signature $name
=example-$number $name # [repeatable]

# [optional; repeatable]

=message $name
=signature $name
=example-$number $name # [repeatable]

# [optional; repeatable]

=method $name
=signature $name
=example-$number $name # [repeatable]

# [optional; repeatable]

=routine $name
=signature $name
=example-$number $name # [repeatable]

# [optional; repeatable]

=feature $name
=example $name

# [optional; repeatable]

=error $name
=example $name

# [optional; repeatable]

=operator $name
=example $name

# [optional]

=partials
=authors
=license
=project

The specification is designed to accommodate typical package declarations. It is used by the parser to provide the content used in test automation and document generation. Note: When code blocks are evaluated, the "redefined" warnings are now automatically disabled.

=abstract

Example Test Documentation

=cut

$test->for('abstract');

The abstract block should contain a subtitle describing the package. This is tested for existence.

=attribute name

The name attribute is read-write, optional, and holds a string.

=example-1 name

  # given: synopsis

  my $name = $example->name;

  # "..."

=cut

$test->for('attribute', 'name');

$test->for('example', 1, 'name', sub {
  my ($tryable) = @_;
  $tryable->result;
});

Describing an attribute requires at least three blocks, i.e. attribute $name, signature $name, and example-$number $name. The attribute block should contain a description of the attribute and its purpose. The signature block should contain a routine signature in the form of $signature : $return_type, where $signature is a valid typed signature and $return_type is any valid Venus::Check expression. The example-$number block is a repeatable block, and at least one block must exist when documenting an attribute. The example-$number block should contain valid Perl code and return a value. The block may contain a "magic" comment in the form of given: synopsis or given: example-$number $name which if present will include the given code example(s) with the evaluation of the current block. Each attribute is tested and must be recognized to exist.

=authors

Awncorp, C<awncorp@cpan.org>

=cut

$test->for('authors');

The authors block should contain text describing the authors of the package.

=description

This package provides an example class.

=cut

$test->for('description');

The description block should contain a description of the package and it's behaviors.

=encoding

utf8

=cut

$test->for('encoding');

The encoding block should contain the appropriate encoding.

=error error_on_unknown

This package may raise an error_on_unknown error.

=example-1 error_on_unknown

  # given: synopsis

  my $error = $example->error;

  # "..."

=cut

$test->for('error', 'error_on_unknown');

$test->for('example', 1, 'error_on_unknown', sub {
  my ($tryable) = @_;
  $tryable->result;
});

The error $name block should contain a description of the error the package may raise, and can include an example-$number $name block to ensure the error is raised and caught.

=example-1 name

  # given: synopsis

  my $name = $example->name;

  # "..."

=cut

$test->for('example', 1, 'name', sub {
  my ($tryable) = @_;
  $tryable->result;
});

The example-$number $name block should contain valid Perl code and return a value. The block may contain a "magic" comment in the form of given: synopsis or given: example-$number $name which if present will include the given code example(s) with the evaluation of the current block.

=feature noop

This package is no particularly useful features.

=example-1 noop

  # given: synopsis

  my $feature = $example->feature;

  # "..."

=cut

$test->for('feature');

$test->for('example', 1, 'noop', sub {
  my ($tryable) = @_;
  $tryable->result;
});

The feature $name block should contain a description of the feature(s) the package enables, and can include an example-$number $name block to ensure the feature described works as expected.

=function eg

The eg function returns a new instance of Example.

=example-1 eg

  # given: synopsis

  my $example = eg();

  # "..."

=cut

$test->for('function', 'eg');

$test->for('example', 1, 'eg', sub {
  my ($tryable) = @_;
  $tryable->result;
});

Describing a function requires at least three blocks, i.e. function $name, signature $name, and example-$number $name. The function block should contain a description of the function and its purpose. The signature block should contain a routine signature in the form of $signature : $return_type, where $signature is a valid typed signature and $return_type is any valid Venus::Check expression. The example-$number block is a repeatable block, and at least one block must exist when documenting an attribute. The example-$number block should contain valid Perl code and return a value. The block may contain a "magic" comment in the form of given: synopsis or given: example-$number $name which if present will include the given code example(s) with the evaluation of the current block. Each attribute is tested and must be recognized to exist.

=includes

function: eg

method: prepare
method: execute

=cut

$test->for('includes');

The includes block should contain a list of function, method, and/or routine names in the format of $type: $name. Empty (or commented out) lines are ignored. Each function, method, and/or routine is tested to be documented properly, i.e. has the requisite counterparts (e.g. signature and at least one example block). Also, the package must recognize that each exists.

=inherits

Venus::Core::Class

=cut

$test->for('inherits');

The inherits block should contain a list of parent packages. These packages are tested for loadability.

=integrates

Venus::Role::Catchable
Venus::Role::Throwable

=cut

$test->for('integrates');

The integrates block should contain a list of packages that are involved in the behavior of the main package. These packages are not automatically tested.

=layout

encoding
name
synopsis
description
attributes: attribute
authors
license

=cut

$test->for('layout');

The layout block should contain a list blocks to render using "render", in the order they should be rendered.

=libraries

Venus::Check

=cut

$test->for('libraries');

The libraries block should contain a list of packages, each describing how particular type names used within function and method signatures will be validated. These packages are tested for loadability.

=license

No license granted.

=cut

$test->for('license');

The license block should contain a link and/or description of the license governing the package.

=message accept

The accept message represents acceptance.

=example-1 accept

  # given: synopsis

  my $accept = $example->accept;

  # "..."

=cut

$test->for('message', 'accept');

$test->for('example', 1, 'accept', sub {
  my ($tryable) = @_;
  $tryable->result;
});

Describing a message requires at least three blocks, i.e. message $name, signature $name, and example-$number $name. The message block should contain a description of the message and its purpose. The signature block should contain a routine signature in the form of $signature : $return_type, where $signature is a valid typed signature and $return_type is any valid Venus::Check expression. The example-$number block is a repeatable block, and at least one block must exist when documenting an attribute. The example-$number block should contain valid Perl code and return a value. The block may contain a "magic" comment in the form of given: synopsis or given: example-$number $name which if present will include the given code example(s) with the evaluation of the current block. Each attribute is tested and must be recognized to exist.

=metadata prepare

{since => "1.2.3"}

=cut

$test->for('metadata', 'prepare');

The metadata $name block should contain a stringified hashref containing Perl data structures used in the rendering of the package's documentation.

=method prepare

The prepare method prepares for execution.

=example-1 prepare

  # given: synopsis

  my $prepare = $example->prepare;

  # "..."

=cut

$test->for('method', 'prepare');

$test->for('example', 1, 'prepare', sub {
  my ($tryable) = @_;
  $tryable->result;
});

Describing a method requires at least three blocks, i.e. method $name, signature $name, and example-$number $name. The method block should contain a description of the method and its purpose. The signature block should contain a routine signature in the form of $signature : $return_type, where $signature is a valid typed signature and $return_type is any valid Venus::Check expression. The example-$number block is a repeatable block, and at least one block must exist when documenting an attribute. The example-$number block should contain valid Perl code and return a value. The block may contain a "magic" comment in the form of given: synopsis or given: example-$number $name which if present will include the given code example(s) with the evaluation of the current block. Each attribute is tested and must be recognized to exist.

=name

Example

=cut

$test->for('name');

The name block should contain the package name. This is tested for loadability.

=operator ("")

This package overloads the C<""> operator.

=example-1 ("")

  # given: synopsis

  my $string = "$example";

  # "..."

=cut

$test->for('operator', '("")');

$test->for('example', 1, '("")', sub {
  my ($tryable) = @_;
  $tryable->result;
});

The operator $name block should contain a description of the overloaded operation the package performs, and can include an example-$number $name block to ensure the operation is functioning properly.

=partials

t/path/to/other.t: present: authors
t/path/to/other.t: present: license

=cut

$test->for('partials');

The partials block should contain references to other marked-up test files in the form of $file: $method: $section, which will call the $method on a Venus::Test instance for the $file and include the results in-place as part of the rendering of the current file.

=project

https://github.com/awncorp/example

=cut

$test->for('project');

The project block should contain a description and/or links for the package's project.

=signature prepare

  prepare() (boolean)

=cut

$test->for('signature', 'prepare');

The signature $name block should contain a routine signature in the form of $signature : $return_type, where $signature is a valid typed signature and $return_type is any valid Venus::Check expression.

=synopsis

  use Example;

  my $example = Example->new;

  # bless(..., "Example")

=cut

$test->for('synopsis', sub {
  my ($tryable) = @_;
  $tryable->result;
});

The synopsis block should contain the normative usage of the package. This is tested for existence. This block should be written in a way that allows it to be evaled successfully and should return a value.

=tagline

Example Class

=cut

$test->for('tagline');

The tagline block should contain a 2-5 word description of the package, which will be prepended to the name as a full description of the package.

=version

1.2.3

=cut

$test->for('version');

The version block should contain a valid version number for the package.

# ...

$test->for('name');

This framework provides a set of automated subtests based on the package specification, but not everything can be automated so it also provides you with powerful hooks into the framework for manual testing.

# ...

$test->for('synopsis', sub {
  my ($tryable) = @_;

  my $result = $tryable->result;

  # must return truthy to continue
  $result;
});

The code examples documented can be automatically evaluated (evaled) and returned using a callback you provide for further testing. Because the code examples are returned as Venus::Try objects this makes capturing and testing exceptions simple, for example:

# ...

$test->for('synopsis', sub {
  my ($tryable) = @_;

  # catch exception thrown by the synopsis
  $tryable->catch('Path::Find::Error', sub {
    return $_[0];
  });

  # test the exception
  my $result = $tryable->result;
  ok $result->isa('Path::Find::Error'), 'exception caught';

  # must return truthy to continue
  $result;
});

Additionally, another manual testing hook (with some automation) is the example method. This hook evaluates (evals) a given example and returns the result as a Venus::Try object. The first argument is the example ID (or number), for example:

# ...

$test->for('example', 1, 'children', sub {
  my ($tryable) = @_;

  my $result = $tryable->result;

  # must return truthy to continue
  $result;
});

Finally, the lesser-used but useful manual testing hook is the feature method. This hook evaluates (evals) a documented feature and returns the result as a Venus::Try object, for example:

# ...

$test->for('feature', 'export-path-make', sub {
  my ($tryable) = @_;

  ok my $result = $tryable->result, 'result ok';

  # must return truthy to continue
  $result;
});

The test automation and documentation generation enabled through this framework makes it easy to maintain source/test/documentation parity. This also increases reusability and reduces the need for complicated state and test setup.

This package may raise an error_on_abstract exception.

This package may raise an error_on_description exception.

This package may raise an error_on_name exception.

This package may raise an error_on_synopsis exception.

This package may raise an error_on_tagline exception.

t/Venus.t: present: authors t/Venus.t: present: license

520 POD Errors

The following errors were encountered while parsing the POD:

Around line 14:

Unknown directive: =name

Around line 22:

Unknown directive: =tagline

Around line 30:

Unknown directive: =abstract

Around line 38:

Unknown directive: =includes

Around line 157:

Unknown directive: =synopsis

Around line 185:

Unknown directive: =description

Around line 195:

Unknown directive: =inherits

Around line 203:

Unknown directive: =integrates

Around line 211:

Unknown directive: =attribute

Around line 215:

Unknown directive: =signature

Around line 219:

Unknown directive: =metadata

Around line 237:

=cut found outside a pod block. Skipping to next block.

Around line 259:

=cut found outside a pod block. Skipping to next block.

Around line 269:

Unknown directive: =function

Around line 274:

Unknown directive: =signature

Around line 278:

Unknown directive: =metadata

Around line 304:

Unknown directive: =method

Around line 310:

Unknown directive: =signature

Around line 314:

Unknown directive: =metadata

Around line 332:

=cut found outside a pod block. Skipping to next block.

Around line 353:

=cut found outside a pod block. Skipping to next block.

Around line 364:

Unknown directive: =method

Around line 370:

Unknown directive: =signature

Around line 374:

Unknown directive: =metadata

Around line 400:

=cut found outside a pod block. Skipping to next block.

Around line 429:

=cut found outside a pod block. Skipping to next block.

Around line 440:

Unknown directive: =method

Around line 446:

Unknown directive: =signature

Around line 450:

Unknown directive: =metadata

Around line 486:

=cut found outside a pod block. Skipping to next block.

Around line 525:

=cut found outside a pod block. Skipping to next block.

Around line 536:

Unknown directive: =method

Around line 542:

Unknown directive: =signature

Around line 546:

Unknown directive: =metadata

Around line 572:

=cut found outside a pod block. Skipping to next block.

Around line 601:

=cut found outside a pod block. Skipping to next block.

Around line 612:

Unknown directive: =method

Around line 618:

Unknown directive: =signature

Around line 622:

Unknown directive: =metadata

Around line 648:

=cut found outside a pod block. Skipping to next block.

Around line 677:

=cut found outside a pod block. Skipping to next block.

Around line 688:

Unknown directive: =method

Around line 694:

Unknown directive: =signature

Around line 698:

Unknown directive: =metadata

Around line 724:

=cut found outside a pod block. Skipping to next block.

Around line 753:

=cut found outside a pod block. Skipping to next block.

Around line 764:

Unknown directive: =method

Around line 770:

Unknown directive: =signature

Around line 774:

Unknown directive: =metadata

Around line 812:

=cut found outside a pod block. Skipping to next block.

Around line 853:

=cut found outside a pod block. Skipping to next block.

Around line 864:

Unknown directive: =method

Around line 870:

Unknown directive: =signature

Around line 874:

Unknown directive: =metadata

Around line 910:

=cut found outside a pod block. Skipping to next block.

Around line 949:

=cut found outside a pod block. Skipping to next block.

Around line 959:

Unknown directive: =method

Around line 965:

Unknown directive: =signature

Around line 969:

Unknown directive: =metadata

Around line 995:

=cut found outside a pod block. Skipping to next block.

Around line 1024:

=cut found outside a pod block. Skipping to next block.

Around line 1035:

Unknown directive: =method

Around line 1041:

Unknown directive: =signature

Around line 1045:

Unknown directive: =metadata

Around line 1081:

=cut found outside a pod block. Skipping to next block.

Around line 1120:

=cut found outside a pod block. Skipping to next block.

Around line 1131:

Unknown directive: =method

Around line 1137:

Unknown directive: =signature

Around line 1141:

Unknown directive: =metadata

Around line 1170:

=cut found outside a pod block. Skipping to next block.

Around line 1202:

=cut found outside a pod block. Skipping to next block.

Around line 1212:

Unknown directive: =method

Around line 1218:

Unknown directive: =signature

Around line 1222:

Unknown directive: =metadata

Around line 1248:

=cut found outside a pod block. Skipping to next block.

Around line 1277:

=cut found outside a pod block. Skipping to next block.

Around line 1288:

Unknown directive: =method

Around line 1294:

Unknown directive: =signature

Around line 1298:

Unknown directive: =metadata

Around line 1325:

=cut found outside a pod block. Skipping to next block.

Around line 1355:

=cut found outside a pod block. Skipping to next block.

Around line 1366:

Unknown directive: =method

Around line 1372:

Unknown directive: =signature

Around line 1376:

Unknown directive: =metadata

Around line 1408:

=cut found outside a pod block. Skipping to next block.

Around line 1443:

=cut found outside a pod block. Skipping to next block.

Around line 1454:

Unknown directive: =method

Around line 1460:

Unknown directive: =signature

Around line 1464:

Unknown directive: =metadata

Around line 1490:

=cut found outside a pod block. Skipping to next block.

Around line 1519:

=cut found outside a pod block. Skipping to next block.

Around line 1530:

Unknown directive: =method

Around line 1536:

Unknown directive: =signature

Around line 1540:

Unknown directive: =metadata

Around line 1566:

=cut found outside a pod block. Skipping to next block.

Around line 1595:

=cut found outside a pod block. Skipping to next block.

Around line 1606:

Unknown directive: =method

Around line 1612:

Unknown directive: =signature

Around line 1616:

Unknown directive: =metadata

Around line 1652:

=cut found outside a pod block. Skipping to next block.

Around line 1691:

=cut found outside a pod block. Skipping to next block.

Around line 1702:

Unknown directive: =method

Around line 1708:

Unknown directive: =signature

Around line 1712:

Unknown directive: =metadata

Around line 1754:

=cut found outside a pod block. Skipping to next block.

Around line 1799:

=cut found outside a pod block. Skipping to next block.

Around line 1810:

Unknown directive: =method

Around line 1816:

Unknown directive: =signature

Around line 1820:

Unknown directive: =metadata

Around line 1862:

=cut found outside a pod block. Skipping to next block.

Around line 1907:

=cut found outside a pod block. Skipping to next block.

Around line 1918:

Unknown directive: =method

Around line 1924:

Unknown directive: =signature

Around line 1928:

Unknown directive: =metadata

Around line 1954:

=cut found outside a pod block. Skipping to next block.

Around line 1983:

=cut found outside a pod block. Skipping to next block.

Around line 1994:

Unknown directive: =method

Around line 2000:

Unknown directive: =signature

Around line 2004:

Unknown directive: =metadata

Around line 2040:

=cut found outside a pod block. Skipping to next block.

Around line 2079:

=cut found outside a pod block. Skipping to next block.

Around line 2090:

Unknown directive: =method

Around line 2096:

Unknown directive: =signature

Around line 2100:

Unknown directive: =metadata

Around line 2127:

=cut found outside a pod block. Skipping to next block.

Around line 2157:

=cut found outside a pod block. Skipping to next block.

Around line 2168:

Unknown directive: =method

Around line 2174:

Unknown directive: =signature

Around line 2178:

Unknown directive: =metadata

Around line 2204:

=cut found outside a pod block. Skipping to next block.

Around line 2233:

=cut found outside a pod block. Skipping to next block.

Around line 2244:

Unknown directive: =method

Around line 2250:

Unknown directive: =signature

Around line 2254:

Unknown directive: =metadata

Around line 2302:

=cut found outside a pod block. Skipping to next block.

Around line 2353:

=cut found outside a pod block. Skipping to next block.

Around line 2364:

Unknown directive: =method

Around line 2370:

Unknown directive: =signature

Around line 2374:

Unknown directive: =metadata

Around line 2404:

=cut found outside a pod block. Skipping to next block.

Around line 2437:

=cut found outside a pod block. Skipping to next block.

Around line 2447:

Unknown directive: =method

Around line 2453:

Unknown directive: =signature

Around line 2457:

Unknown directive: =metadata

Around line 2483:

=cut found outside a pod block. Skipping to next block.

Around line 2512:

=cut found outside a pod block. Skipping to next block.

Around line 2523:

Unknown directive: =method

Around line 2529:

Unknown directive: =signature

Around line 2533:

Unknown directive: =metadata

Around line 2559:

=cut found outside a pod block. Skipping to next block.

Around line 2588:

=cut found outside a pod block. Skipping to next block.

Around line 2599:

Unknown directive: =method

Around line 2604:

Unknown directive: =signature

Around line 2608:

Unknown directive: =metadata

Around line 2626:

=cut found outside a pod block. Skipping to next block.

Around line 2637:

Unknown directive: =method

Around line 2642:

Unknown directive: =signature

Around line 2646:

Unknown directive: =metadata

Around line 2664:

=cut found outside a pod block. Skipping to next block.

Around line 2680:

Unknown directive: =method

Around line 2686:

Unknown directive: =signature

Around line 2690:

Unknown directive: =metadata

Around line 2708:

=cut found outside a pod block. Skipping to next block.

Around line 2737:

=cut found outside a pod block. Skipping to next block.

Around line 2748:

Unknown directive: =method

Around line 2752:

Unknown directive: =signature

Around line 2756:

Unknown directive: =metadata

Around line 2782:

=cut found outside a pod block. Skipping to next block.

Around line 2793:

Unknown directive: =method

Around line 2797:

Unknown directive: =signature

Around line 2801:

Unknown directive: =metadata

Around line 2837:

=cut found outside a pod block. Skipping to next block.

Around line 2848:

Unknown directive: =method

Around line 2852:

Unknown directive: =signature

Around line 2856:

Unknown directive: =metadata

Around line 2882:

=cut found outside a pod block. Skipping to next block.

Around line 2893:

Unknown directive: =method

Around line 2897:

Unknown directive: =signature

Around line 2901:

Unknown directive: =metadata

Around line 2927:

=cut found outside a pod block. Skipping to next block.

Around line 2938:

Unknown directive: =method

Around line 2942:

Unknown directive: =signature

Around line 2946:

Unknown directive: =metadata

Around line 2972:

=cut found outside a pod block. Skipping to next block.

Around line 2983:

Unknown directive: =method

Around line 2987:

Unknown directive: =signature

Around line 2991:

Unknown directive: =metadata

Around line 3029:

=cut found outside a pod block. Skipping to next block.

Around line 3040:

Unknown directive: =method

Around line 3044:

Unknown directive: =signature

Around line 3048:

Unknown directive: =metadata

Around line 3084:

=cut found outside a pod block. Skipping to next block.

Around line 3095:

Unknown directive: =method

Around line 3099:

Unknown directive: =signature

Around line 3103:

Unknown directive: =metadata

Around line 3138:

Unknown directive: =method

Around line 3142:

Unknown directive: =signature

Around line 3146:

Unknown directive: =metadata

Around line 3191:

Unknown directive: =method

Around line 3195:

Unknown directive: =signature

Around line 3199:

Unknown directive: =metadata

Around line 3228:

=cut found outside a pod block. Skipping to next block.

Around line 3239:

Unknown directive: =method

Around line 3243:

Unknown directive: =signature

Around line 3247:

Unknown directive: =metadata

Around line 3282:

Unknown directive: =method

Around line 3286:

Unknown directive: =signature

Around line 3290:

Unknown directive: =metadata

Around line 3317:

=cut found outside a pod block. Skipping to next block.

Around line 3328:

Unknown directive: =method

Around line 3332:

Unknown directive: =signature

Around line 3336:

Unknown directive: =metadata

Around line 3368:

=cut found outside a pod block. Skipping to next block.

Around line 3379:

Unknown directive: =method

Around line 3383:

Unknown directive: =signature

Around line 3387:

Unknown directive: =metadata

Around line 3422:

Unknown directive: =method

Around line 3426:

Unknown directive: =signature

Around line 3430:

Unknown directive: =metadata

Around line 3456:

=cut found outside a pod block. Skipping to next block.

Around line 3467:

Unknown directive: =method

Around line 3471:

Unknown directive: =signature

Around line 3475:

Unknown directive: =metadata

Around line 3511:

=cut found outside a pod block. Skipping to next block.

Around line 3522:

Unknown directive: =method

Around line 3526:

Unknown directive: =signature

Around line 3530:

Unknown directive: =metadata

Around line 3581:

Unknown directive: =method

Around line 3585:

Unknown directive: =signature

Around line 3589:

Unknown directive: =metadata

Around line 3640:

Unknown directive: =method

Around line 3644:

Unknown directive: =signature

Around line 3648:

Unknown directive: =metadata

Around line 3674:

=cut found outside a pod block. Skipping to next block.

Around line 3680:

Unknown directive: =method

Around line 3684:

Unknown directive: =signature

Around line 3688:

Unknown directive: =metadata

Around line 3724:

=cut found outside a pod block. Skipping to next block.

Around line 3735:

Unknown directive: =method

Around line 3740:

Unknown directive: =signature

Around line 3744:

Unknown directive: =metadata

Around line 3762:

=cut found outside a pod block. Skipping to next block.

Around line 3772:

Unknown directive: =method

Around line 3777:

Unknown directive: =signature

Around line 3781:

Unknown directive: =metadata

Around line 3799:

=cut found outside a pod block. Skipping to next block.

Around line 3809:

Unknown directive: =method

Around line 3814:

Unknown directive: =signature

Around line 3818:

Unknown directive: =metadata

Around line 3836:

=cut found outside a pod block. Skipping to next block.

Around line 3857:

=cut found outside a pod block. Skipping to next block.

Around line 3881:

=cut found outside a pod block. Skipping to next block.

Around line 3905:

=cut found outside a pod block. Skipping to next block.

Around line 3916:

Unknown directive: =method

Around line 3921:

Unknown directive: =signature

Around line 3925:

Unknown directive: =metadata

Around line 3943:

=cut found outside a pod block. Skipping to next block.

Around line 3963:

=cut found outside a pod block. Skipping to next block.

Around line 3973:

Unknown directive: =method

Around line 3978:

Unknown directive: =signature

Around line 3982:

Unknown directive: =metadata

Around line 4000:

=cut found outside a pod block. Skipping to next block.

Around line 4011:

Unknown directive: =method

Around line 4016:

Unknown directive: =signature

Around line 4020:

Unknown directive: =metadata

Around line 4038:

=cut found outside a pod block. Skipping to next block.

Around line 4058:

=cut found outside a pod block. Skipping to next block.

Around line 4068:

Unknown directive: =method

Around line 4073:

Unknown directive: =signature

Around line 4077:

Unknown directive: =metadata

Around line 4095:

=cut found outside a pod block. Skipping to next block.

Around line 4105:

Unknown directive: =method

Around line 4110:

Unknown directive: =signature

Around line 4114:

Unknown directive: =metadata

Around line 4132:

=cut found outside a pod block. Skipping to next block.

Around line 4142:

Unknown directive: =method

Around line 4147:

Unknown directive: =signature

Around line 4151:

Unknown directive: =metadata

Around line 4169:

=cut found outside a pod block. Skipping to next block.

Around line 4179:

Unknown directive: =method

Around line 4185:

Unknown directive: =signature

Around line 4189:

Unknown directive: =metadata

Around line 4209:

=cut found outside a pod block. Skipping to next block.

Around line 4220:

Unknown directive: =method

Around line 4224:

Unknown directive: =signature

Around line 4228:

Unknown directive: =metadata

Around line 4266:

=cut found outside a pod block. Skipping to next block.

Around line 4280:

Unknown directive: =method

Around line 4284:

Unknown directive: =signature

Around line 4288:

Unknown directive: =metadata

Around line 4326:

=cut found outside a pod block. Skipping to next block.

Around line 4340:

Unknown directive: =method

Around line 4344:

Unknown directive: =signature

Around line 4348:

Unknown directive: =metadata

Around line 4386:

=cut found outside a pod block. Skipping to next block.

Around line 4400:

Unknown directive: =method

Around line 4404:

Unknown directive: =signature

Around line 4408:

Unknown directive: =metadata

Around line 4446:

=cut found outside a pod block. Skipping to next block.

Around line 4460:

Unknown directive: =method

Around line 4464:

Unknown directive: =signature

Around line 4468:

Unknown directive: =metadata

Around line 4506:

=cut found outside a pod block. Skipping to next block.

Around line 4520:

Unknown directive: =method

Around line 4524:

Unknown directive: =signature

Around line 4528:

Unknown directive: =metadata

Around line 4566:

=cut found outside a pod block. Skipping to next block.

Around line 4580:

Unknown directive: =method

Around line 4584:

Unknown directive: =signature

Around line 4588:

Unknown directive: =metadata

Around line 4626:

=cut found outside a pod block. Skipping to next block.

Around line 4640:

Unknown directive: =method

Around line 4644:

Unknown directive: =signature

Around line 4648:

Unknown directive: =metadata

Around line 4686:

=cut found outside a pod block. Skipping to next block.

Around line 4700:

Unknown directive: =method

Around line 4704:

Unknown directive: =signature

Around line 4708:

Unknown directive: =metadata

Around line 4746:

=cut found outside a pod block. Skipping to next block.

Around line 4760:

Unknown directive: =method

Around line 4764:

Unknown directive: =signature

Around line 4768:

Unknown directive: =metadata

Around line 4806:

=cut found outside a pod block. Skipping to next block.

Around line 4820:

Unknown directive: =method

Around line 4824:

Unknown directive: =signature

Around line 4828:

Unknown directive: =metadata

Around line 4866:

=cut found outside a pod block. Skipping to next block.

Around line 4880:

Unknown directive: =method

Around line 4884:

Unknown directive: =signature

Around line 4888:

Unknown directive: =metadata

Around line 4926:

=cut found outside a pod block. Skipping to next block.

Around line 4940:

Unknown directive: =method

Around line 4944:

Unknown directive: =signature

Around line 4948:

Unknown directive: =metadata

Around line 4986:

=cut found outside a pod block. Skipping to next block.

Around line 5000:

Unknown directive: =method

Around line 5004:

Unknown directive: =signature

Around line 5008:

Unknown directive: =metadata

Around line 5046:

=cut found outside a pod block. Skipping to next block.

Around line 5060:

Unknown directive: =method

Around line 5064:

Unknown directive: =signature

Around line 5068:

Unknown directive: =metadata

Around line 5106:

=cut found outside a pod block. Skipping to next block.

Around line 5120:

Unknown directive: =method

Around line 5124:

Unknown directive: =signature

Around line 5128:

Unknown directive: =metadata

Around line 5166:

=cut found outside a pod block. Skipping to next block.

Around line 5180:

Unknown directive: =method

Around line 5184:

Unknown directive: =signature

Around line 5188:

Unknown directive: =metadata

Around line 5226:

=cut found outside a pod block. Skipping to next block.

Around line 5240:

Unknown directive: =method

Around line 5244:

Unknown directive: =signature

Around line 5248:

Unknown directive: =metadata

Around line 5286:

=cut found outside a pod block. Skipping to next block.

Around line 5300:

Unknown directive: =method

Around line 5304:

Unknown directive: =signature

Around line 5308:

Unknown directive: =metadata

Around line 5346:

=cut found outside a pod block. Skipping to next block.

Around line 5360:

Unknown directive: =method

Around line 5364:

Unknown directive: =signature

Around line 5368:

Unknown directive: =metadata

Around line 5406:

=cut found outside a pod block. Skipping to next block.

Around line 5420:

Unknown directive: =method

Around line 5424:

Unknown directive: =signature

Around line 5428:

Unknown directive: =metadata

Around line 5466:

=cut found outside a pod block. Skipping to next block.

Around line 5480:

Unknown directive: =method

Around line 5484:

Unknown directive: =signature

Around line 5488:

Unknown directive: =metadata

Around line 5526:

=cut found outside a pod block. Skipping to next block.

Around line 5540:

Unknown directive: =method

Around line 5544:

Unknown directive: =signature

Around line 5548:

Unknown directive: =metadata

Around line 5586:

=cut found outside a pod block. Skipping to next block.

Around line 5600:

Unknown directive: =method

Around line 5604:

Unknown directive: =signature

Around line 5608:

Unknown directive: =metadata

Around line 5646:

=cut found outside a pod block. Skipping to next block.

Around line 5660:

Unknown directive: =method

Around line 5664:

Unknown directive: =signature

Around line 5668:

Unknown directive: =metadata

Around line 5706:

=cut found outside a pod block. Skipping to next block.

Around line 5720:

Unknown directive: =method

Around line 5724:

Unknown directive: =signature

Around line 5728:

Unknown directive: =metadata

Around line 5766:

=cut found outside a pod block. Skipping to next block.

Around line 5780:

Unknown directive: =method

Around line 5786:

Unknown directive: =signature

Around line 5790:

Unknown directive: =metadata

Around line 5812:

=cut found outside a pod block. Skipping to next block.

Around line 5828:

Unknown directive: =method

Around line 5832:

Unknown directive: =signature

Around line 5836:

Unknown directive: =metadata

Around line 5866:

=cut found outside a pod block. Skipping to next block.

Around line 5882:

Unknown directive: =method

Around line 5886:

Unknown directive: =signature

Around line 5890:

Unknown directive: =metadata

Around line 5942:

=cut found outside a pod block. Skipping to next block.

Around line 5970:

Unknown directive: =method

Around line 5974:

Unknown directive: =signature

Around line 5978:

Unknown directive: =metadata

Around line 6008:

=cut found outside a pod block. Skipping to next block.

Around line 6024:

Unknown directive: =method

Around line 6028:

Unknown directive: =signature

Around line 6032:

Unknown directive: =metadata

Around line 6062:

=cut found outside a pod block. Skipping to next block.

Around line 6078:

Unknown directive: =method

Around line 6082:

Unknown directive: =signature

Around line 6086:

Unknown directive: =metadata

Around line 6114:

=cut found outside a pod block. Skipping to next block.

Around line 6128:

Unknown directive: =method

Around line 6132:

Unknown directive: =signature

Around line 6136:

Unknown directive: =metadata

Around line 6190:

=cut found outside a pod block. Skipping to next block.

Around line 6218:

Unknown directive: =method

Around line 6222:

Unknown directive: =signature

Around line 6226:

Unknown directive: =metadata

Around line 6272:

=cut found outside a pod block. Skipping to next block.

Around line 6294:

Unknown directive: =method

Around line 6298:

Unknown directive: =signature

Around line 6302:

Unknown directive: =metadata

Around line 6350:

Unknown directive: =method

Around line 6354:

Unknown directive: =signature

Around line 6358:

Unknown directive: =metadata

Around line 6403:

You forgot a '=back' before '=head2'

You forgot a '=back' before '=head2'

You forgot a '=back' before '=head2'

Around line 6412:

Unknown directive: =method

Around line 6416:

Unknown directive: =signature

Around line 6420:

Unknown directive: =metadata

Around line 6449:

=cut found outside a pod block. Skipping to next block.

Around line 6460:

Unknown directive: =method

Around line 6464:

Unknown directive: =signature

Around line 6468:

Unknown directive: =metadata

Around line 6516:

Unknown directive: =method

Around line 6520:

Unknown directive: =signature

Around line 6524:

Unknown directive: =metadata

Around line 6559:

=cut found outside a pod block. Skipping to next block.

Around line 6579:

Unknown directive: =method

Around line 6583:

Unknown directive: =signature

Around line 6587:

Unknown directive: =metadata

Around line 6619:

=cut found outside a pod block. Skipping to next block.

Around line 6630:

Unknown directive: =method

Around line 6634:

Unknown directive: =signature

Around line 6638:

Unknown directive: =metadata

Around line 6686:

Unknown directive: =method

Around line 6690:

Unknown directive: =signature

Around line 6694:

Unknown directive: =metadata

Around line 6724:

=cut found outside a pod block. Skipping to next block.

Around line 6740:

Unknown directive: =method

Around line 6744:

Unknown directive: =signature

Around line 6748:

Unknown directive: =metadata

Around line 6798:

=cut found outside a pod block. Skipping to next block.

Around line 6824:

Unknown directive: =method

Around line 6828:

Unknown directive: =signature

Around line 6832:

Unknown directive: =metadata

Around line 6883:

Unknown directive: =method

Around line 6887:

Unknown directive: =signature

Around line 6891:

Unknown directive: =metadata

Around line 6958:

You forgot a '=back' before '=head2'

Around line 6983:

Unknown directive: =method

Around line 6987:

Unknown directive: =signature

Around line 6991:

Unknown directive: =metadata

Around line 7021:

=cut found outside a pod block. Skipping to next block.

Around line 7037:

Unknown directive: =method

Around line 7041:

Unknown directive: =signature

Around line 7045:

Unknown directive: =metadata

Around line 7095:

=cut found outside a pod block. Skipping to next block.

Around line 7102:

=over without closing =back

Around line 7121:

Unknown directive: =method

Around line 7126:

Unknown directive: =signature

Around line 7130:

Unknown directive: =metadata

Around line 7148:

=cut found outside a pod block. Skipping to next block.

Around line 7180:

Unknown directive: =method

Around line 7185:

Unknown directive: =signature

Around line 7189:

Unknown directive: =metadata

Around line 7207:

=cut found outside a pod block. Skipping to next block.

Around line 7217:

Unknown directive: =method

Around line 7222:

Unknown directive: =signature

Around line 7226:

Unknown directive: =metadata

Around line 7244:

=cut found outside a pod block. Skipping to next block.

Around line 7270:

=cut found outside a pod block. Skipping to next block.

Around line 7286:

Unknown directive: =feature

Around line 7362:

Unknown directive: =feature

Around line 7377:

Unknown directive: =feature

Around line 7415:

Unknown directive: =feature

Around line 7429:

Unknown directive: =feature

Around line 7444:

Unknown directive: =feature

Around line 7458:

Unknown directive: =feature

Around line 7487:

Unknown directive: =feature

Around line 7511:

Unknown directive: =feature

Around line 7540:

Unknown directive: =feature

Around line 7578:

Unknown directive: =feature

Around line 7599:

Unknown directive: =feature

Around line 7614:

Unknown directive: =feature

Around line 7630:

Unknown directive: =feature

Around line 7651:

Unknown directive: =feature

Around line 7667:

Unknown directive: =feature

Around line 7682:

Unknown directive: =feature

Around line 7720:

Unknown directive: =feature

Around line 7735:

Unknown directive: =feature

Around line 7773:

Unknown directive: =feature

Around line 7788:

Unknown directive: =feature

Around line 7817:

Unknown directive: =feature

Around line 7835:

Unknown directive: =feature

Around line 7850:

Unknown directive: =feature

Around line 7866:

Unknown directive: =feature

Around line 7889:

Unknown directive: =feature

Around line 7904:

Unknown directive: =feature

Around line 7918:

Unknown directive: =feature

Around line 7999:

Unknown directive: =error

Around line 8029:

=cut found outside a pod block. Skipping to next block.

Around line 8045:

Unknown directive: =error

Around line 8075:

=cut found outside a pod block. Skipping to next block.

Around line 8091:

Unknown directive: =error

Around line 8121:

=cut found outside a pod block. Skipping to next block.

Around line 8137:

Unknown directive: =error

Around line 8167:

=cut found outside a pod block. Skipping to next block.

Around line 8183:

Unknown directive: =error

Around line 8213:

=cut found outside a pod block. Skipping to next block.

Around line 8229:

Unknown directive: =partials