From: Andy Grundman Date: Mon, 13 Aug 2007 02:16:34 +0000 (+0000) Subject: Update Apache FastCGI tests to test at the root location as well as non-root. X-Git-Tag: 5.7099_04~166 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=62fdfd9c38f9a41c49841e3de3db9a87a3f33f11 Update Apache FastCGI tests to test at the root location as well as non-root. --- diff --git a/t/conf/extra.conf.in b/t/conf/extra.conf.in index 1896441..cb8c13b 100644 --- a/t/conf/extra.conf.in +++ b/t/conf/extra.conf.in @@ -26,5 +26,16 @@ FastCgiIpcDir @ServerRoot@/tmp/tmp FastCgiServer @ServerRoot@/tmp/TestApp/script/testapp_fastcgi.pl -idle-timeout 300 -processes 1 - ScriptAlias /fastcgi/ @ServerRoot@/tmp/TestApp/script/testapp_fastcgi.pl/ + + # Test at a non-root location + ScriptAlias /fastcgi/deep/path/ @ServerRoot@/tmp/TestApp/script/testapp_fastcgi.pl/ + + # Test at root + ScriptAlias / @ServerRoot@/tmp/TestApp/script/testapp_fastcgi.pl/ + + + # Fix trailing slas + RewriteEngine on + RewriteRule /fastcgi/deep/path$ /fastcgi/deep/path/ [PT] + diff --git a/t/optional_apache-fastcgi-non-root.t b/t/optional_apache-fastcgi-non-root.t new file mode 100755 index 0000000..b8da311 --- /dev/null +++ b/t/optional_apache-fastcgi-non-root.t @@ -0,0 +1,65 @@ +#!perl + +# Run all tests against FastCGI mode under Apache +# +# Note, to get this to run properly, you may need to give it the path to your +# httpd.conf: +# +# perl t/optional_apache-fastcgi-non-root.pl -httpd_conf /etc/apache/httpd.conf t/live_* + +use strict; +use warnings; + +use Apache::Test; +use Apache::TestRun (); + +use File::Path; +use File::Copy::Recursive; +use FindBin; +use IO::Socket; + +# clean up +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/tmp"; +chdir "$FindBin::Bin/../t/tmp"; +system "$FindBin::Bin/../script/catalyst.pl TestApp"; +chdir "$FindBin::Bin/.."; +File::Copy::Recursive::dircopy( 't/lib', 't/tmp/TestApp/lib' ); + +# remove TestApp's tests so Apache::Test doesn't try to run them +rmtree 't/tmp/TestApp/t'; + +$ENV{CATALYST_SERVER} = 'http://localhost:8529/fastcgi/deep/path'; + +if ( !-e 't/optional_apache-fastcgi.pl' ) { + die "ERROR: Please run test from the Catalyst-Runtime directory\n"; +} + +push @ARGV, glob( 't/live_*' ); + +Apache::TestRun->new->run(@ARGV); + +# 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; + } +} diff --git a/t/optional_apache-fastcgi.pl b/t/optional_apache-fastcgi.pl index 931c9cd..89442f1 100755 --- a/t/optional_apache-fastcgi.pl +++ b/t/optional_apache-fastcgi.pl @@ -5,7 +5,7 @@ # Note, to get this to run properly, you may need to give it the path to your # httpd.conf: # -# perl t/optional_apache-fastcgi.pl -httpd_conf /etc/apache/httpd.conf +# perl t/optional_apache-fastcgi.pl -httpd_conf /etc/apache/httpd.conf t/live_* use strict; use warnings; @@ -31,7 +31,13 @@ File::Copy::Recursive::dircopy( 't/lib', 't/tmp/TestApp/lib' ); # remove TestApp's tests so Apache::Test doesn't try to run them rmtree 't/tmp/TestApp/t'; -$ENV{CATALYST_SERVER} = 'http://localhost:8529/fastcgi'; +$ENV{CATALYST_SERVER} = 'http://localhost:8529'; + +if ( !-e 't/optional_apache-fastcgi.pl2' ) { + die "ERROR: Please run test from the Catalyst-Runtime directory\n"; +} + +push @ARGV, glob( 't/live_*' ); Apache::TestRun->new->run(@ARGV);