#!/usr/bin/env perl
package yath;
use strict;
use warnings;

our $VERSION = '0.000014';

use POSIX ":sys_wait_h";

use Time::HiRes qw/sleep/;

use Test2::Harness;
use Test2::Harness::Config;
use Test2::Harness::Run;
#use Test2::Harness::Renderer::Temp;

my $harness = Test2::Harness->new;

my $config = Test2::Harness::Config->new(
#    merge   => 1,
    jobs         => 1,
    event_stream => 1,
    libs         => ['../Test2/lib', 'lib'],
    tests        => [['../Test2/t/', '../Test2/'], ['../Test2/xt/', '../Test2/']],
#    tests        => [['../Test2/t/Legacy/Builder/fork_with_new_stdout.t', '../Test2/']],
    preload      => ['Scalar::Util'],
);

my $counter = 1;
my $run_id = join '-' => ($$, time, $counter++);
my $run    = Test2::Harness::Run->spawn(
    dir    => $harness->listen,
    run_id => $run_id,
    config => $config,
);

#my $renderer = Test2::Harness::Renderer::Temp->new(
#    config => $config,
#);

use Test2::Formatter::TAP;
my $formatter = Test2::Formatter::TAP->new;

my $done = 0;
while (!$done) {
    my $pid = waitpid($run->pid, WNOHANG);
    $done = 1 if $pid == $run->pid;
    die "Runner process vanished" if $pid == -1;

    if(my @events = $run->poll) {
        for my $e (@events) {
            my ($id, $name, $line, $stamp) = @$e;
            print "$id $name $stamp | $line\n";
        }
    }
    else {
        sleep 0.02;
    }
}

#my $exit = $run->failures;
#$exit = 255 if $exit > 255;
#exit $exit;

__END__

    return sort {
        return -1 if $a->{is_start} && !$b->{is_start};
        return  1 if $b->{is_start} && !$a->{is_start};
        return  1 if $a->{is_end}   && !$b->{is_end};
        return -1 if $b->{is_end}   && !$a->{is_end};
        return ($a->{stamp} || 0) <=> ($b->{stamp} || 0);
    } @events;


runner
worker
parser
aggregator
renderer
