Updated CGI and FastCGI tests to not delete the tmp files if the server is still...
[catagits/Catalyst-Runtime.git] / t / optional / apache-fastcgi.pl
index a4c2a52..ec7e77e 100755 (executable)
@@ -16,23 +16,44 @@ use Apache::TestRun ();
 use File::Path;
 use File::Copy::Recursive;
 use FindBin;
+use IO::Socket;
 
 # clean up
-rmtree "$FindBin::Bin/../../t/var" if -d "$FindBin::Bin/../../t/var";
+rmtree "$FindBin::Bin/../../t/tmp" if -d "$FindBin::Bin/../../t/tmp";
 
 # create a TestApp and copy the test libs into it
-mkdir "$FindBin::Bin/../../t/var";
-chdir "$FindBin::Bin/../../t/var";
+mkdir "$FindBin::Bin/../../t/tmp";
+chdir "$FindBin::Bin/../../t/tmp";
 system "$FindBin::Bin/../../script/catalyst.pl TestApp";
 chdir "$FindBin::Bin/../..";
-File::Copy::Recursive::dircopy( 't/live/lib', 't/var/TestApp/lib' );
+File::Copy::Recursive::dircopy( 't/live/lib', 't/tmp/TestApp/lib' );
 
 # remove TestApp's tests so Apache::Test doesn't try to run them
-rmtree 't/var/TestApp/t';
+rmtree 't/tmp/TestApp/t';
 
 $ENV{CATALYST_SERVER} = 'http://localhost:8529/fastcgi';
 
 Apache::TestRun->new->run(@ARGV);
 
-# clean up
-rmtree "$FindBin::Bin/../../t/var" if -d "$FindBin::Bin/../../t/var";
+# clean up if the server has shut down
+# this allows the test files to stay around if the user ran -start-httpd
+if ( ! check_port( 'localhost', 8529 ) ) {
+    rmtree "$FindBin::Bin/../../t/tmp" if -d "$FindBin::Bin/../../t/tmp";
+}
+
+sub check_port {
+    my ( $host, $port ) = @_;
+
+    my $remote = IO::Socket::INET->new(
+        Proto    => "tcp",
+        PeerAddr => $host,
+        PeerPort => $port
+    );
+    if ($remote) {
+        close $remote;
+        return 1;
+    }
+    else {
+        return 0;
+    }
+}