Well, I was able to get what I wanted by constructing the individual parsers manually and running them.
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,
...
}
}
Then I suppose I can do the aggregation manually, though I'm still hoping there's a way to get the aggregated results and the actual TAP data from a single TAP::Harness instance. I haven't been able to figure that out, though.