Added automated tests for CGI and FastCGI using Apache::Test
Andy Grundman [Tue, 18 Oct 2005 16:03:53 +0000 (16:03 +0000)]
MANIFEST.SKIP
t/conf/extra.conf.in [new file with mode: 0644]
t/optional/apache-cgi.pl [new file with mode: 0755]
t/optional/apache-fastcgi.pl [new file with mode: 0755]

index 2ffcc10..62a858d 100644 (file)
 \.bak$
 \#$
 \b\.#
+
+# Avoid Apache::Test files
+t/conf/apache_test_config.pm
+t/conf/extra.conf
+t/conf/httpd.conf
+t/conf/mime.types
+t/htdocs
+t/logs
diff --git a/t/conf/extra.conf.in b/t/conf/extra.conf.in
new file mode 100644 (file)
index 0000000..e2e467b
--- /dev/null
@@ -0,0 +1,11 @@
+# CGI
+<IfModule @CGI_MODULE@>
+    ScriptAlias /cgi/ @ServerRoot@/var/TestApp/script/testapp_cgi.pl/
+</IfModule>
+
+# FastCGI
+<IfModule mod_fastcgi.c>
+    FastCgiIpcDir @ServerRoot@/var/tmp
+    FastCgiServer @ServerRoot@/var/TestApp/script/testapp_fastcgi.pl -idle-timeout 300 -processes 5
+    ScriptAlias /fastcgi/ @ServerRoot@/var/TestApp/script/testapp_fastcgi.pl/
+</IfModule>
diff --git a/t/optional/apache-cgi.pl b/t/optional/apache-cgi.pl
new file mode 100755 (executable)
index 0000000..3c0a4de
--- /dev/null
@@ -0,0 +1,39 @@
+#!perl
+
+# Run all tests against CGI 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-cgi.pl -httpd_conf /etc/apache/httpd.conf
+
+use strict;
+use warnings;
+
+use Apache::Test;
+use Apache::TestRun ();
+
+use File::Path;
+use File::Copy::Recursive;
+use FindBin;
+
+# clean up
+rmtree "$FindBin::Bin/../../t/var" if -d "$FindBin::Bin/../../t/var";
+
+# create a TestApp and copy the test libs into it
+mkdir "$FindBin::Bin/../../t/var";
+chdir "$FindBin::Bin/../../t/var";
+system "$FindBin::Bin/../../script/catalyst.pl TestApp";
+chdir "$FindBin::Bin/../..";
+File::Copy::Recursive::dircopy( 't/live/lib', 't/var/TestApp/lib' );
+
+# remove TestApp's tests so Apache::Test doesn't try to run them
+rmtree 't/var/TestApp/t';
+
+my $cfg  = Apache::Test::config();
+$ENV{CATALYST_SERVER} = 'http://' . $cfg->hostport . '/cgi';
+
+Apache::TestRun->new->run(@ARGV);
+
+# clean up
+rmtree "$FindBin::Bin/../../t/var" if -d "$FindBin::Bin/../../t/var";
diff --git a/t/optional/apache-fastcgi.pl b/t/optional/apache-fastcgi.pl
new file mode 100755 (executable)
index 0000000..213293b
--- /dev/null
@@ -0,0 +1,39 @@
+#!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.pl -httpd_conf /etc/apache/httpd.conf
+
+use strict;
+use warnings;
+
+use Apache::Test;
+use Apache::TestRun ();
+
+use File::Path;
+use File::Copy::Recursive;
+use FindBin;
+
+# clean up
+rmtree "$FindBin::Bin/../../t/var" if -d "$FindBin::Bin/../../t/var";
+
+# create a TestApp and copy the test libs into it
+mkdir "$FindBin::Bin/../../t/var";
+chdir "$FindBin::Bin/../../t/var";
+system "$FindBin::Bin/../../script/catalyst.pl TestApp";
+chdir "$FindBin::Bin/../..";
+File::Copy::Recursive::dircopy( 't/live/lib', 't/var/TestApp/lib' );
+
+# remove TestApp's tests so Apache::Test doesn't try to run them
+rmtree 't/var/TestApp/t';
+
+my $cfg  = Apache::Test::config();
+$ENV{CATALYST_SERVER} = 'http://' . $cfg->hostport . '/fastcgi';
+
+Apache::TestRun->new->run(@ARGV);
+
+# clean up
+rmtree "$FindBin::Bin/../../t/var" if -d "$FindBin::Bin/../../t/var";