AnyEvent-Open3-Simple

 view release on metacpan or  search on metacpan

t/anyevent_open3_simple__mojo.t  view on Meta::CPAN

use Mojo::Reactor;
use File::Temp qw( tempdir );
use File::Spec;

plan tests => 8;

$ENV{MOJO_REACTOR} = 'Mojo::Reactor::Poll';

isnt(Mojo::Reactor->detect, 'Mojo::Reactor::EV', "Mojo::Reactor->detect = @{[ Mojo::Reactor->detect ]}");

Mojo::IOLoop->timer( 7 => sub {
  Mojo::IOLoop->stop;
  fail 'called on_exit';
});

my $called_on_start = 0;
my $exit_value      = 0;
my @out;
my @err;

my $ipc = AnyEvent::Open3::Simple->new(

t/anyevent_open3_simple__on_fail.t  view on Meta::CPAN

my $ipc = AnyEvent::Open3::Simple->new(
  on_fail => sub {
    ($proc, $exit_value1) = @_;
  },
  on_exit   => sub {
    ($proc, $exit_value2, $signal) = @_;
    $done->send;
  },
);

my $timeout = AnyEvent->timer (
  after => 5,
  cb   => sub { diag 'timeout!'; exit 2; },
);

do {
  $done = AnyEvent->condvar;

  my $ret = $ipc->run($^X, File::Spec->catfile($dir, 'child_normal.pl'));
  isa_ok $ret, 'AnyEvent::Open3::Simple';

t/anyevent_open3_simple__on_out.t  view on Meta::CPAN


my $ipc = AnyEvent::Open3::Simple->new(
  on_stdout => sub { push @out, pop },
  on_stderr => sub { push @err, pop },
  on_exit   => sub {
    ($proc, $exit_value, $signal) = @_;
    $done->send;
  },
);

my $timeout = AnyEvent->timer (
  after => 5,
  cb    => sub { diag 'timeout!'; exit 2; },
);

my $ret = $ipc->run($^X, File::Spec->catfile($dir, 'child.pl'));
diag $@ if $@;
isa_ok $ret, 'AnyEvent::Open3::Simple';

$done->recv;

t/anyevent_open3_simple__on_out_array.t  view on Meta::CPAN


my $ipc = AnyEvent::Open3::Simple->new(
  on_stdout => \@out,
  on_stderr => \@err,
  on_exit   => sub {
    ($proc, $exit_value, $signal) = @_;
    $done->send;
  },
);

my $timeout = AnyEvent->timer (
  after => 5,
  cb    => sub { diag 'timeout!'; exit 2; },
);

my $ret = $ipc->run($^X, File::Spec->catfile($dir, 'child.pl'));
diag $@ if $@;
isa_ok $ret, 'AnyEvent::Open3::Simple';

$done->recv;

t/anyevent_open3_simple__on_signal.t  view on Meta::CPAN

my $ipc = AnyEvent::Open3::Simple->new(
  on_signal => sub {
    ($proc, $signal1) = @_;
  },
  on_exit   => sub {
    ($proc, $exit_value, $signal2) = @_;
    $done->send;
  },
);

my $timeout = AnyEvent->timer (
  after => 5,
  cb    => sub { diag 'timeout!'; exit 2 },
);

do {
  $done = AnyEvent->condvar;

  my $ret = $ipc->run($^X, File::Spec->catfile($dir, 'child_normal.pl'));
  diag $@ if $@;
  isa_ok $ret, 'AnyEvent::Open3::Simple';

t/anyevent_open3_simple__on_start.t  view on Meta::CPAN

{
  subtest "iteration $iteration" => sub {
    plan tests => 6;

    my $foo = 0;
    my @cb_args;

    my $ret = $ipc->run($^X, File::Spec->catfile($dir, 'child.pl'), 'arg1', 'arg2', sub { $foo = $iteration; @cb_args = @_ });
    isa_ok $ret, 'AnyEvent::Open3::Simple';

    my $timeout = AnyEvent->timer (
      after => 5,
      cb    => sub { diag 'timeout!'; exit 2; },
    );

    $done->recv;

    ok $on_start_called, 'on_start event fired';

    is $prog, $^X, 'prog';
    is_deeply \@args, [File::Spec->catfile($dir, 'child.pl'), 'arg1', 'arg2'], 'args';

t/anyevent_open3_simple__on_success.t  view on Meta::CPAN

my $ipc = AnyEvent::Open3::Simple->new(
  on_success => sub {
    $exit_value1 = 0;
  },
  on_exit   => sub {
    ($proc, $exit_value2, $signal) = @_;
    $done->send;
  },
);

my $timeout = AnyEvent->timer (
  after => 5,
  cb   => sub { diag 'timeout!'; exit 2; },
);

do {
  $done = AnyEvent->condvar;

  my $ret = $ipc->run($^X, File::Spec->catfile($dir, 'child_normal.pl'));
  isa_ok $ret, 'AnyEvent::Open3::Simple';

t/anyevent_open3_simple__print.t  view on Meta::CPAN

    my($proc) = @_;
    eval { $proc->say('message1') };
    diag $@ if $@;
    eval { $proc->say('message2') };
    diag $@ if $@;
    eval { $proc->close };
    diag $@ if $@;
  },
);

my $timeout = AnyEvent->timer(
  after => 5,
  cb    => sub { diag 'timeout!'; exit 2 },
);

my $proc = $ipc->run($^X, File::Spec->catfile($dir, 'child.pl'));
isa_ok $proc, 'AnyEvent::Open3::Simple';

$done->recv;

open($fh, '<', File::Spec->catfile($dir, 'child.out'));

t/anyevent_open3_simple__proc.t  view on Meta::CPAN

    $old_user = eval { $proc->user };
    diag $@ if $@;
    eval { $proc->user('some user data') };
    diag $@ if $@;
  },
);

my $ret = $ipc->run($^X, File::Spec->catfile($dir, 'child.pl'));
isa_ok $ret, 'AnyEvent::Open3::Simple';

my $timeout = AnyEvent->timer (
  after => 5,
  cb    => sub { diag 'timeout!'; exit 2; },
);

$done->recv;

is eval { $proc->pid }, $child_pid, "both procs have same pid";
diag $@ if $@;

my $new_user = eval { $proc->user };

t/anyevent_open3_simple__stdin.t  view on Meta::CPAN

    plan tests => 4;

    my $done = AnyEvent->condvar;

    my $ipc = AnyEvent::Open3::Simple->new(
      on_exit => sub {
        $done->send(1);
      },
    );

    my $timeout = AnyEvent->timer(
      after => 5,
      cb    => sub { diag 'timeout!'; $done->send(0) },
    );

    my $proc = $ipc->run($^X, File::Spec->catfile($dir, 'child.pl'), ref $stdin ? $stdin : \$stdin);
      isa_ok $proc, 'AnyEvent::Open3::Simple';

      is $done->recv, 1, 'no timeout';

      open($fh, '<', File::Spec->catfile($dir, 'child.out'));



( run in 1.161 second using v1.01-cache-2.11-cpan-49f99fa48dc )