NAME
TAP::Tree - TAP (Test Anything Protocol) parser which supported the subtest
SYNOPSIS
Parses a TAP output.
use v5.10.1;
require TAP::Tree;
my $tap = <<'END';
1..2
ok 1 - sub test 1
1..1
ok 1 - test 1
not ok 2 - test 2
END
my $taptree = TAP::Tree->new( tap_ref => \$tap );
my $tree = $taptree->parse; # return value is hash reference simply.
say $tree->{plan}{number}; # -> print 2
say $tree->{testline}[0]{description}; # -> print test 1
say $tree->{testline}[1]{description}; # -> print test 2
say $tree->{testline}[0]{subtest}{testline}[0]{description};
# -> print sub test 1
Summarises the parsed TAP output
my $summary = $taptree->summary;
say $summary->{planned_tests}; # -> print 2
say $summary->{ran_tests}; # -> print 2
say $summary->{failed_tests}; # -> print 1 ... number of failed tests.
# 'TODO' tests are counted as 'ok', not 'not ok'
Iterates the parsed TAP
my $iterator = $taptree->create_tap_tree_iterator( subtest => 1 );
while ( my $result = $iterator->next ) {
say '>' x $result->{indent} . $result->{testline}{description};
}
# -> print
# test 1
# >sub test 1
# test 2
DESCRIPTION
TAP::Tree is a simple parser of TAP which supported the subtest.
It parses the data of a TAP format to the data of tree structure.
Moreover, the iterator for complicated layered tree structure is also prepared.
METHODS
new
require TAP::Tree; my $taptree = TAP::Tree->new( tap_ref => $tap_ref );
Creates the instance of
TAP::Tree
.Specify the reference to the scalar variable which stored the outputs of TAP as tap_ref of an arguments.
The arguments can be specified
tap_file
andtap_tree
in addition totap_ref
.tap_file
is specified the path to file which stored the outputs of TAP.my $taptree = TAP::Tree->new( tap_file => $path );
tap_tree
is specified the data of the tree structure whichTAP::Tree
parsed.my $taptree = TAP::Tree->new( tap_tree => $parsed_tap );
utf8
is specified, when TAP is encoded by UTF-8.my $taptree = TAP::Tree->new( tap_ref => $tap_ref, utf8 => 1 );
parse
require TAP::Tree; my $taptree = TAP::Tree->new( tap_ref => $tap_ref ); my $tree = $taptree->parse; say $tree->{plan}{number}; say $tree->{testline}[0]->{description};
Parses a output of TAP and returns the tree structure data. The return value is a hash reference and all of the parsed result of TAP are stored.
Please dump the detailed content of inclusion :)
{ version => {}, # the version number of TAP (usually 12). plan => {}, # the hash reference in which the numbers of tests. testline => [], # the array reference in which the result of each tests. bailout => {}, # the hash reference in which an informational about Bailout. }
summary
Returns the summary of the TAP output.
The contents of a summary is below ( hash reference ).
version -> the version number of TAP (usually 12). is_skipped_all -> the flag that shows whether all the tests were skipped. skip_all_msg -> the message that shows the reason of skip tests. is_bailout -> the flag that shows whether bailout the tests. bailout_msg -> the message that shows the reason of bailout. planned_tests -> the number of the planned tests. ran_tests -> the number of the ran tests. failed_tests -> the number of the failed tests. is_good_plan -> the flag that shows whether the number of plan is set. is_ran_all_tests -> the flag that shows whether the all tests are ran.
create_tap_tree_iterator
TAP::Tree
makes becomes the complicated structure where a hierarchy is deep, when there is a subtest.Therefore, the iterator which can follow a tree strucutre data easily is prepared for
TAP::Tree
.my $taptree = TAP::Tree->new( tap_ref => $tap_ref ); $taptree->parse; my $iterator = $taptree->create_tap_tree_iterator( subtest => 1); my $test = $iterator->next; say $test->{testline}{description};
Specify arguments
subtest
, when following subtest.
ISSUE REPORT
https://github.com/magnolia-k/p5-TAP-Tree/issues
COPYRIGHT
copyright 2014- Magnolia <magnolia.k@me.com>
.
LICENSE
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.