1..4 ok 1 ok 2 not ok 3 # Failed test at t/my_test.t line 7. ok 4 #### my $tap = qx|./compiled_test_app|; my $parser = TAP::Parser->new( { tap => $tap } ); #### use strict; use warnings; use Test::More; use TAP::Parser; my $tap = <<'END_TAP'; 1..4 ok 1 ok 2 not ok 3 # Failed test at t/my_test.t line 7. ok 4 END_TAP my $parser = TAP::Parser->new( { tap => $tap } ); my $plan = $parser->next; die "not a plan" unless $plan->is_plan; plan( tests => $plan->tests_planned ); while ( my $result = $parser->next ) { if ( $result->is_test ) { if ( $result->is_ok ) { pass( $result->as_string ); } else { fail( $result->as_string ); } } elsif ( $result->is_comment ) { print $result->as_string; } else { die "Can't figure out what to do with $result"; } } #### 1..4 ok 1 - ok 1 ok 2 - ok 2 not ok 3 - not ok 3 # Failed test 'not ok 3' # at t/tap_wrapper.t line 28. # Failed test at t/my_test.t line 7.ok 4 - ok 4 # Looks like you failed 1 test of 4. #### use Test::ParseTAP; my $tap = qx|./compiled_test|; parse_tap($tap);