Commit | Line | Data |
0bcb98c7 |
1 | #!perl |
2 | |
3 | # Run all tests against CGI mode under Apache |
4 | # |
5 | # Note, to get this to run properly, you may need to give it the path to your |
6 | # httpd.conf: |
7 | # |
130ebb11 |
8 | # perl t/optional_apache-cgi.pl -httpd_conf /etc/apache/httpd.conf |
0bcb98c7 |
9 | |
10 | use strict; |
11 | use warnings; |
12 | |
13 | use Apache::Test; |
14 | use Apache::TestRun (); |
15 | |
16 | use File::Path; |
17 | use File::Copy::Recursive; |
18 | use FindBin; |
19 | use IO::Socket; |
20 | |
21 | # clean up |
22 | rmtree "$FindBin::Bin/../t/tmp" if -d "$FindBin::Bin/../t/tmp"; |
23 | |
24 | # create a TestApp and copy the test libs into it |
25 | mkdir "$FindBin::Bin/../t/tmp"; |
26 | chdir "$FindBin::Bin/../t/tmp"; |
27 | system "$FindBin::Bin/../script/catalyst.pl TestApp"; |
28 | chdir "$FindBin::Bin/.."; |
29 | File::Copy::Recursive::dircopy( 't/lib', 't/tmp/TestApp/lib' ); |
30 | |
31 | # remove TestApp's tests so Apache::Test doesn't try to run them |
32 | rmtree 't/tmp/TestApp/t'; |
33 | |
34 | $ENV{CATALYST_SERVER} = 'http://localhost:8529/rewrite'; |
35 | |
36 | Apache::TestRun->new->run(@ARGV); |
37 | |
38 | # clean up if the server has shut down |
39 | # this allows the test files to stay around if the user ran -start-httpd |
40 | if ( !check_port( 'localhost', 8529 ) ) { |
41 | rmtree "$FindBin::Bin/../t/tmp" if -d "$FindBin::Bin/../t/tmp"; |
42 | } |
43 | |
44 | sub check_port { |
45 | my ( $host, $port ) = @_; |
46 | |
47 | my $remote = IO::Socket::INET->new( |
48 | Proto => "tcp", |
49 | PeerAddr => $host, |
50 | PeerPort => $port |
51 | ); |
52 | if ($remote) { |
53 | close $remote; |
54 | return 1; |
55 | } |
56 | else { |
57 | return 0; |
58 | } |
59 | } |