The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
##################################################
# Check the exit status feature
##################################################

use Test::More tests => 9;
use Proc::Simple;

#Proc::Simple::debug(1);

my $errortolerance = 2;	# this is necessary if the system under test is quite busy
my $proc = Proc::Simple->new();

my $t0 = time();
my $start_rc = $proc->start("sleep 5");
ok($start_rc, 'start');

my $wait_rc = $proc->wait();
my $t1 = time();
ok(! $proc->poll(), "process has exited");
ok(defined $wait_rc, "wait_rc defined");

my $exit_rc = $proc->exit_status();
ok(defined $exit_rc, "exit_rc defined");

ok(defined $proc->t0, "t0 defined");
ok(defined $proc->t1, "t1 defined");

my $t0diff = abs($proc->t0 - $t0);
ok($t0diff <= $errortolerance, "t0-proc->t0 <= $errortolerance");

my $t1diff = abs($proc->t1 - $t1);
ok($t1diff <= $errortolerance, "t1-proc->t1 <= $errortolerance");

my $actela = $t1 - $t0;
my $pmela = $proc->t1 - $proc->t0;
my $eladiff = abs($actela - $pmela);
ok($eladiff < $errortolerance, "eladiff <= $errortolerance");