whitespace fixes
[gitmo/MooseX-Daemonize.git] / t / 30.with_pid_file.t
index e26d142..deb0917 100644 (file)
@@ -1,56 +1,56 @@
-#!/usr/bin/perl
-
 use strict;
 use warnings;
 
-use Cwd;
 use File::Spec::Functions;
 
-use Test::More no_plan => 1;
-use Test::Exception;
+use Test::More;
+use Test::Fatal;
 use Test::Moose;
+use File::Temp qw(tempdir);
+
+my $dir = tempdir( CLEANUP => 1 );
+
 
 BEGIN {
-    use_ok('MooseX::Daemonize::Core');  
+    use_ok('MooseX::Daemonize::Core');
 }
 
 use constant DEBUG => 0;
 
-my $CWD                = Cwd::cwd;
-my $PIDFILE            = catfile($CWD, 'test-app.pid');
-$ENV{MX_DAEMON_STDOUT} = catfile($CWD, 'Out.txt');
-$ENV{MX_DAEMON_STDERR} = catfile($CWD, 'Err.txt');
+my $PIDFILE            = catfile($dir, 'test-app.pid');
+$ENV{MX_DAEMON_STDOUT} = catfile($dir, 'Out.txt');
+$ENV{MX_DAEMON_STDERR} = catfile($dir, 'Err.txt');
 
 {
     package MyFooDaemon;
     use Moose;
-    
+
     with 'MooseX::Daemonize::WithPidFile';
-         
+
     sub init_pidfile {
         MooseX::Daemonize::Pid::File->new( file => $PIDFILE )
     }
-    
+
     sub start {
         my $self = shift;
-        
-        # this tests our bad PID 
+
+        # this tests our bad PID
         # cleanup functionality.
-        print "Our parent PID is " . $self->pidfile->pid . "\n";
-        
+        print "Our parent PID is " . $self->pidfile->pid . "\n" if ::DEBUG;
+
         $self->daemonize;
         return unless $self->is_daemon;
-        
+
         # make it easy to find with ps
-        $0 = 'test-app';
-        $SIG{INT} = sub { 
-            print "Got INT! Oh Noes!"; 
+        $0 = 'test-app-2';
+        $SIG{INT} = sub {
+            print "Got INT! Oh Noes!";
             $self->pidfile->remove;
             exit;
-        };      
+        };
         while (1) {
-            print "Hello from $$\n"; 
-            sleep(10);       
+            print "Hello from $$\n";
+            sleep(10);
         }
         exit;
     }
@@ -71,9 +71,11 @@ ok($d->has_pidfile, '... we have a pidfile value');
 
 ok(!(-e $PIDFILE), '... the PID file does not exist yet');
 
-lives_ok {
-    $d->start;
-} '... successfully daemonized from (' . $$ . ')';
+is(
+    exception { $d->start },
+    undef,
+    '... successfully daemonized from (' . $$ . ')',
+);
 
 my $p = $d->pidfile;
 isa_ok($p, 'MooseX::Daemonize::Pid::File');
@@ -94,7 +96,15 @@ if (DEBUG) {
 }
 kill INT => $p->pid;
 diag "killed $pid" if DEBUG;
-sleep(2);
+
+# give the process time to be killed on slow/loaded systems
+for (1..10) {
+    last unless kill 0 => $pid;
+    # sleep a little before retrying
+    sleep(2);
+}
+
+
 if (DEBUG) {
     diag `ps $pid`;
     diag "-------";
@@ -104,3 +114,8 @@ if (DEBUG) {
 ok(!$p->is_running, '... the daemon process is no longer running (' . $p->pid . ')');
 ok(!(-e $PIDFILE), '... the PID file has been removed');
 
+unlink $ENV{MX_DAEMON_STDOUT};
+unlink $ENV{MX_DAEMON_STDERR};
+
+done_testing;
+