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" and "tap_tree" in addition to "tap_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 which "TAP::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 COPYRIGHT copyright 2014- Magnolia "". 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.