The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 6;
use lib qw(lib);

{

    package ManagerRole;
    use Moose::Role;
    with qw(MooseX::Workers);

    sub worker_manager_start {
        ::pass('started worker manager');
    }

    sub worker_manager_stop {
        ::pass('stopped worker manager');
    }

    sub worker_stdout {
        my ( $self, $output ) = @_;
        ::is( $output, 'HELLO' );
    }

    sub worker_stderr {
        my ( $self, $output ) = @_;
        ::is( $output, 'WORLD' );
    }
    sub worker_error { }
    sub worker_done  { ::pass('worker done') }

    sub worker_started { ::pass('worker started') }
    no Moose::Role;
}

{

    package Manager;
    use Moose;
    with qw(ManagerRole);

    no Moose;
}

my $m = Manager->new();
$m->run_command( sub { if ($^O eq 'MSWin32') { binmode STDOUT; binmode STDERR; } print "HELLO\n"; print STDERR "WORLD\n" } );
POE::Kernel->run();