#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 8;
use lib 'lib';
use Ubic::Cmd;
use t::Utils;
rebuild_tfiles();
use Ubic;
local_ubic( service_dirs => [qw( t/service/freaks t/service/common )] );
my $out = '';
open my $fh, '>', \$out;
my $stdout = select $fh;
Ubic::Cmd->start('sleeping-daemon');
select $stdout;
like($out, qr/^\QStarting sleeping-daemon... started (pid \E\d+\)\n$/, 'Ubic::Cmd logged something on start');
is(Ubic->status('sleeping-daemon')->status, 'running', 'Ubic::Cmd really started service');
$out = '';
open $fh, '>', \$out;
select $fh;
Ubic::Cmd->stop('sleeping-daemon');
select $stdout;
is($out, "Stopping sleeping-daemon... stopped\n", 'Ubic::Cmd logged something on stop');
is(Ubic->status('sleeping-daemon'), 'not running', 'Ubic::Cmd really stopped service');
$out = '';
open $fh, '>', \$out;
select $fh;
eval {
Ubic::Cmd->do_custom_command('sleeping-common', '2plus2');
};
select $stdout;
if ($@) {
fail("do_custom_command failed: $@");
}
else {
pass("do_custom_command is successful");
}
is($out, "Running 2plus2 for sleeping-common... ok\n", 'Ubic::Cmd logged something on custom command');
$out = '';
open $fh, '>', \$out;
select $fh;
my $results = Ubic::Cmd->start('broken');
select $stdout;
is($results->exit_code, 1, 'exit code when starting broken service');
like($out, qr{^Starting broken\.\.\. oops, this service can't stop at tfiles/service/broken line \d+\.$}, 'stdout when starting broken service');