Получение индивидуальных результатов агрегированного вывода TAP из TAP::Harness

Я запускаю несколько тестов через TAP::Harness и сейчас пытаюсь получить все индивидуальные результаты от парсера TAP. Сначала я запускаю тесты:

my $harness = TAP::Harness->new( { verbosity => 1, lib => [ 'blib/lib' ] } );
my $aggregator = $harness->runtests( @tests );

Это прекрасно работает. Затем я пытаюсь получить результаты в соответствии с документацией TAP::Parser:

my @results;

my @parsers = $aggregator->parsers;
foreach my $prsr( @parsers ) { 
    while( my $result = $prsr->next ) { 
        push @results, { type => $result->type,
                         ok   => $result->ok,
                         text => $result->as_string };
    }
}

Тем не менее, это приводит к @results будучи пустым массивом.

Если я Dumper Я вижу, что отдельные объекты Parser успешно проанализировали результаты теста:

  bless( {
           'tests_run' => 5,
           'actual_passed' => [
                                1,
                                2,
                                3,
                                4,
                                5
                              ],
  ....etc

Я не могу понять, как получить результаты теста из объекта.

1 ответ

Решение

Ну, я смог получить то, что хотел, создав вручную отдельные парсеры и запустив их.

    foreach my $test( @tests ) { 
        my @test_results;
        my $parser = TAP::Parser->new( { source => $test } );
        while( my $result = $parser->next ) { 
            push @test_results, 
              { text => $result->as_string,
                ...
              }
        }

Затем я полагаю, что могу выполнить агрегацию вручную, хотя я все еще надеюсь, что есть способ получить агрегированные результаты и фактические данные TAP из одного экземпляра TAP::Harness. Я не смог понять это, хотя.

Другие вопросы по тегам