X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Foptional_lighttpd-fastcgi.t;h=1d3ca400625d67ff5646c4b3db0a2dcc434c2dbb;hp=6b084cded1c601bcd761c27ba0e31bd443f0f7eb;hb=6c217fb3c36a6e0ac4ef82b839ee3d5ed924e2e5;hpb=381e2cab022817530b18712d6a7194eb33c6842a diff --git a/t/optional_lighttpd-fastcgi.t b/t/optional_lighttpd-fastcgi.t index 6b084cd..1d3ca40 100644 --- a/t/optional_lighttpd-fastcgi.t +++ b/t/optional_lighttpd-fastcgi.t @@ -1,48 +1,52 @@ -#!perl - use strict; use warnings; +use Test::More; +BEGIN { + plan skip_all => 'set TEST_LIGHTTPD to enable this test' + unless $ENV{TEST_LIGHTTPD}; +} + use File::Path; use FindBin; use IO::Socket; -use Test::More; +use Config (); -eval "use Catalyst::Devel 1.0"; -plan skip_all => 'Catalyst::Devel required' if $@; +BEGIN { + eval "use FCGI"; + plan skip_all => 'FCGI required' if $@; -eval "use File::Copy::Recursive"; -plan skip_all => 'File::Copy::Recursive required' if $@; + eval "use File::Copy::Recursive"; + plan skip_all => 'File::Copy::Recursive required' if $@; -my $lighttpd_bin = $ENV{LIGHTTPD_BIN}; -plan skip_all => 'Please set LIGHTTPD_BIN to run this test' - unless $lighttpd_bin && -x $lighttpd_bin; + eval "use Test::Harness"; + plan skip_all => 'Test::Harness required' if $@; +} -plan tests => 1; +use lib 't/lib'; +use MakeTestApp; -require File::Slurp; +my $lighttpd_bin = $ENV{LIGHTTPD_BIN} || `which lighttpd`; +chomp $lighttpd_bin; -# clean up -rmtree "$FindBin::Bin/../t/tmp" if -d "$FindBin::Bin/../t/tmp"; +plan skip_all => 'Please set LIGHTTPD_BIN to the path to lighttpd' + unless $lighttpd_bin && -x $lighttpd_bin; -# 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"; -chdir "$FindBin::Bin/.."; -File::Copy::Recursive::dircopy( 't/lib', 't/tmp/TestApp/lib' ); +plan tests => 1; -# remove TestApp's tests -rmtree 't/tmp/TestApp/t'; +# this creates t/tmp/TestApp +make_test_app; # Create a temporary lighttpd config my $docroot = "$FindBin::Bin/../t/tmp"; my $port = 8529; # Clean up docroot path -$docroot =~ s{/t/..}{}; +$docroot =~ s{/t/\.\.}{}; + +my $perl5lib = join($Config::Config{path_sep}, "$docroot/../../lib", $ENV{PERL5LIB} || ()); -my $conf = qq{ +my $conf = <<"END"; # basic lighttpd config file for testing fcgi+catalyst server.modules = ( "mod_access", @@ -62,31 +66,42 @@ server.port = $port fastcgi.server = ( "" => ( "FastCgiTest" => ( - "socket" => "$docroot/test.socket", - "check-local" => "disable", - "bin-path" => "$docroot/TestApp/script/testapp_fastcgi.pl", - "min-procs" => 1, - "max-procs" => 1, - "idle-timeout" => 20 + "socket" => "$docroot/test.socket", + "check-local" => "disable", + "bin-path" => "$docroot/TestApp/script/testapp_fastcgi.pl", + "min-procs" => 1, + "max-procs" => 1, + "idle-timeout" => 20, + "bin-environment" => ( + "PERL5LIB" => "$perl5lib" + ) ) ) ) -}; +END -File::Slurp::write_file( "$docroot/lighttpd.conf", $conf ); +open(my $lightconf, '>', "$docroot/lighttpd.conf") + or die "Can't open $docroot/lighttpd.conf: $!"; +print {$lightconf} $conf or die "Write error: $!"; +close $lightconf; -my $pid = open my $lighttpd, "$lighttpd_bin -D -f $docroot/lighttpd.conf 2>&1 |" +my $pid = open my $lighttpd, "$lighttpd_bin -D -f $docroot/lighttpd.conf 2>&1 |" or die "Unable to spawn lighttpd: $!"; - + # wait for it to start -print "Waiting for server to start...\n"; while ( check_port( 'localhost', $port ) != 1 ) { + diag "Waiting for server to start..."; sleep 1; } # run the testsuite against the server $ENV{CATALYST_SERVER} = "http://localhost:$port"; -system( 'prove -r -Ilib/ t/live_*' ); + +my @tests = (shift) || glob('t/aggregate/live_*'); +eval { + runtests(@tests); +}; +ok(!$@, 'lighttpd tests ran OK'); # shut it down kill 'INT', $pid; @@ -95,8 +110,6 @@ close $lighttpd; # clean up rmtree "$FindBin::Bin/../t/tmp" if -d "$FindBin::Bin/../t/tmp"; -ok( 'done' ); - sub check_port { my ( $host, $port ) = @_; @@ -112,4 +125,4 @@ sub check_port { else { return 0; } -} \ No newline at end of file +}