X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Foptional_http-server-restart.t;h=48e7013602d3bdf3bd93ab00fb0644e9ef9680ed;hp=10e8a6027b4c39d2d912b5b3c53c40972a5ef8ad;hb=2f3812528068bc1d9f7840067f0c03d36cd47e6d;hpb=afb82794328ff8da1efc0a4c37f3f3703c262c31 diff --git a/t/optional_http-server-restart.t b/t/optional_http-server-restart.t index 10e8a60..48e7013 100644 --- a/t/optional_http-server-restart.t +++ b/t/optional_http-server-restart.t @@ -1,5 +1,3 @@ -#!perl - # This test tests the standalone server's auto-restart feature. use strict; @@ -9,6 +7,7 @@ use File::Path; use FindBin; use LWP::Simple; use IO::Socket; +use IPC::Open3; use Test::More; use Time::HiRes qw/sleep/; eval "use Catalyst::Devel 1.0;"; @@ -21,14 +20,17 @@ plan skip_all => 'File::Copy::Recursive required' if $@; plan tests => 120; +my $tmpdir = "$FindBin::Bin/../t/tmp"; + # clean up -rmtree "$FindBin::Bin/../t/tmp" if -d "$FindBin::Bin/../t/tmp"; +rmtree $tmpdir if -d $tmpdir; # create a TestApp and copy the test libs into it -mkdir "$FindBin::Bin/../t/tmp"; -chdir "$FindBin::Bin/../t/tmp"; -system - "perl -I$FindBin::Bin/../lib $FindBin::Bin/../script/catalyst.pl TestApp"; +mkdir $tmpdir; +chdir $tmpdir; + +system( 'perl', "-I$FindBin::Bin/../lib", "$FindBin::Bin/../script/catalyst.pl", 'TestApp' ); + chdir "$FindBin::Bin/.."; File::Copy::Recursive::dircopy( 't/lib', 't/tmp/TestApp/lib' ); @@ -38,9 +40,12 @@ rmtree 't/tmp/TestApp/t'; # spawn the standalone HTTP server my $port = 30000 + int rand( 1 + 10000 ); -my $pid = open my $server, -"perl -I$FindBin::Bin/../lib $FindBin::Bin/../t/tmp/TestApp/script/testapp_server.pl -port $port -restart 2>&1 |" - or die "Unable to spawn standalone HTTP server: $!"; +my( $server, $pid ); +$pid = open3( undef, $server, undef, + 'perl', "-I$FindBin::Bin/../lib", + "$FindBin::Bin/../t/tmp/TestApp/script/testapp_server.pl", '-port', + $port, '-restart' ) + or die "Unable to spawn standalone HTTP server: $!"; # switch to non-blocking reads so we can fail # gracefully instead of just hanging forever @@ -167,9 +172,11 @@ my $restartdirs = join ' ', map{ "-restartdirectory $app_root/lib/TestApp/Controller/$_" } qw/Action Engine/; -$pid = open $server, -"perl -I$FindBin::Bin/../lib $FindBin::Bin/../t/tmp/TestApp/script/testapp_server.pl -port $port -restart $restartdirs 2>&1 |" - or die "Unable to spawn standalone HTTP server: $!"; +$pid = open3( undef, $server, undef, + 'perl', "-I$FindBin::Bin/../lib", + "$FindBin::Bin/../t/tmp/TestApp/script/testapp_server.pl", '-port', + $port, '-restart', $restartdirs ) + or die "Unable to spawn standalone HTTP server: $!"; $server->blocking( 0 );