Получение индивидуальных результатов агрегированного вывода 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. Я не смог понять это, хотя.