Oops. That last commit should've read "change numbers to names".
[gitmo/MooseX-Daemonize.git] / t / 30.with_pid_file.t
index 30bf176..e7e439c 100644 (file)
@@ -3,28 +3,31 @@
 use strict;
 use warnings;
 
-use Cwd;
 use File::Spec::Functions;
 
-use Test::More no_plan => 1;
+use Test::More 'no_plan';
 use Test::Exception;
 use Test::Moose;
+use File::Temp qw(tempdir);
+
+my $dir = tempdir( CLEANUP => 1 );
+
 
 BEGIN {
     use_ok('MooseX::Daemonize::Core');  
 }
 
-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');
+use constant DEBUG => 0;
+
+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::Core', 
-         'MooseX::Daemonize::WithPidFile';
+    with 'MooseX::Daemonize::WithPidFile';
          
     sub init_pidfile {
         MooseX::Daemonize::Pid::File->new( file => $PIDFILE )
@@ -33,13 +36,15 @@ $ENV{MX_DAEMON_STDERR} = catfile($CWD, 'Err.txt');
     sub start {
         my $self = shift;
         
+        # this tests our bad PID 
+        # cleanup functionality.
+        print "Our parent PID is " . $self->pidfile->pid . "\n" if ::DEBUG;
+        
         $self->daemonize;
         return unless $self->is_daemon;
         
-        $self->pidfile->write;
-        
         # make it easy to find with ps
-        $0 = 'test-app';
+        $0 = 'test-app-2';
         $SIG{INT} = sub { 
             print "Got INT! Oh Noes!"; 
             $self->pidfile->remove;
@@ -82,18 +87,24 @@ ok($p->does_file_exist, '... the PID file exists');
 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 . ')');
 ok(!(-e $PIDFILE), '... the PID file has been removed');
 
+unlink $ENV{MX_DAEMON_STDOUT};
+unlink $ENV{MX_DAEMON_STDERR};