App-Test-Tapat

 view release on metacpan or  search on metacpan

lib/App/Test/Tapat.pm  view on Meta::CPAN

  my ($self, $file) = @_;
  $file = fileparse($file);
  my ($script, $test_id) = split /_/, $file;
  $self->script($script) || confess "Not sure how to assign script.";
  $self->test_id($test_id) || confess "Not sure how to assign test_id.";
  $self->test_name($file) || confess "Not sure how to assign filename.";
}

=head2 parsetest

This is where the TAP from your test gets parsed. A timer is created here as
well.

=cut

sub parsetest {
  use TAP::Parser qw/all/;
  use TAP::Parser::Aggregator qw/all/;
  use Term::ANSIColor;
  use File::Basename;

  my ($self, $file) = @_;
  my $planned = 0;
  my $aggregate = TAP::Parser::Aggregator->new;

  # Create parser object
  my $parser = TAP::Parser->new( { source => $file } );
  $aggregate->start();            # start timer
  $aggregate->add($file, $parser);

  while ( my $result = $parser->next ) {
    my $out = $result->as_string;
    print "$out\n";
    if ($result->is_plan) {
      $planned = $result->tests_planned;
    }
  }
  $aggregate->stop();             # stop timer

  my $elapsed = $aggregate->elapsed_timestr();
  my $failed = $parser->failed;
  my $passed = $parser->passed;

  # If we ran all the tests, and they all passed
  if ($parser->is_good_plan && ($passed - $failed == $planned)) {
    print color 'green'; 
    print "\n--==[ Passed all our planned tests, updating db for $self->{test_id} ]==--\n";
  } else {



( run in 0.443 second using v1.01-cache-2.11-cpan-49f99fa48dc )