X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F20.core.t;h=36d25ce51fc07b139c4673e5303f9b6753ef62f0;hb=510724ba6d30410fd17bf1962c5b563bf7dda8c1;hp=49ca09726d172e109dcb83caa5a98819a0fcf168;hpb=8ac4733fe6918fb1449262f56b5c371315c6cfb8;p=gitmo%2FMooseX-Daemonize.git diff --git a/t/20.core.t b/t/20.core.t index 49ca097..36d25ce 100644 --- a/t/20.core.t +++ b/t/20.core.t @@ -1,32 +1,32 @@ -#!/usr/bin/perl - use strict; use warnings; -use Cwd; +use Test::More 'no_plan'; +use Test::Fatal; +use Test::Moose; +use File::Temp qw(tempdir); use File::Spec::Functions; -use Test::More no_plan => 1; -use Test::Exception; -use Test::Moose; +my $dir = tempdir( CLEANUP => 1 ); BEGIN { use_ok('MooseX::Daemonize::Core'); - use_ok('MooseX::Daemonize::Pid'); + use_ok('MooseX::Daemonize::Pid'); } -my $CWD = Cwd::cwd; -$ENV{MX_DAEMON_STDOUT} = catfile($CWD, 'Out.txt'); -$ENV{MX_DAEMON_STDERR} = catfile($CWD, 'Err.txt'); +use constant DEBUG => 0; + +$ENV{MX_DAEMON_STDOUT} = catfile($dir, 'Out.txt'); +$ENV{MX_DAEMON_STDERR} = catfile($dir, 'Err.txt'); { package MyFooDaemon; use Moose; - + with 'MooseX::Daemonize::Core'; - + has 'daemon_pid' => (is => 'rw', isa => 'MooseX::Daemonize::Pid'); - + # capture the PID from the fork around 'daemon_fork' => sub { my $next = shift; @@ -37,27 +37,26 @@ $ENV{MX_DAEMON_STDERR} = catfile($CWD, 'Err.txt'); ); } }; - + sub start { - my $self = shift; + my $self = shift; # tell it to ignore zombies ... - $self->daemonize( - ignore_zombies => 1, - no_double_fork => 1, - ); + $self->ignore_zombies( 1 ); + $self->no_double_fork( 1 ); + $self->daemonize; return unless $self->is_daemon; # change to our local dir # so that we can debug easier - chdir $CWD; + chdir $dir; # make it easy to find with ps $0 = 'test-app'; - $SIG{INT} = sub { - print "Got INT! Oh Noes!"; + $SIG{INT} = sub { + print "Got INT! Oh Noes!"; exit; - }; + }; while (1) { - print "Hello from $$\n"; - sleep(10); + print "Hello from $$\n"; + sleep(10); } exit; } @@ -67,9 +66,11 @@ my $d = MyFooDaemon->new; isa_ok($d, 'MyFooDaemon'); does_ok($d, 'MooseX::Daemonize::Core'); -lives_ok { - $d->start; -} '... successfully daemonized from (' . $$ . ')'; +is( + exception { $d->start }, + undef, + '... successfully daemonized from (' . $$ . ')', +); my $p = $d->daemon_pid; isa_ok($p, 'MooseX::Daemonize::Pid'); @@ -77,18 +78,25 @@ isa_ok($p, 'MooseX::Daemonize::Pid'); ok($p->is_running, '... the daemon process is running (' . $p->pid . ')'); my $pid = $p->pid; -diag `ps $pid`; -diag "-------"; -diag `ps -x | grep test-app`; -diag "-------"; -diag "killing $pid"; +if (DEBUG) { + diag `ps $pid`; + diag "-------"; + diag `ps -x | grep test-app`; + diag "-------"; + diag "killing $pid"; +} kill INT => $p->pid; -diag "killed $pid"; +diag "killed $pid" if DEBUG; sleep(2); -diag `ps $pid`; -diag "-------"; -diag `ps -x | grep test-app`; +if (DEBUG) { + diag `ps $pid`; + diag "-------"; + diag `ps -x | grep test-app`; +} ok(!$p->is_running, '... the daemon process is no longer running (' . $p->pid . ')'); +unlink $ENV{MX_DAEMON_STDOUT}; +unlink $ENV{MX_DAEMON_STDERR}; +