use inc::Module::Install;
BEGIN
{
eval {
die "not testing mod_perl" unless $ENV{TEST_MODPERL};
require mod_perl2;
require Apache::Test;
};
{
no strict 'refs';
*HAVE_MP = $@ ? sub { 0 } : sub { 1 };
}
if (!$ENV{SHIPIT} && eval {
require Moose && Moose->VERSION(
'0.73'
) && require MooseX::Types
}) {
*HAVE_MOOSE = sub { 1 };
} else {
*HAVE_MOOSE = sub { 0 };
}
}
if (HAVE_MP) {
require Apache::TestMM;
Apache::TestMM->import(qw(clean test));
}
{
no warnings 'redefine';
*recommends_hack = $Module::Install::VERSION > 0.70 ?
sub { recommends(@_); $_[0] } :
\&recommends;
}
name 'HTTP-Engine';
all_from 'lib/HTTP/Engine.pm';
requires 'Any::Moose' => '0.13';
requires 'Mouse' => '0.62';
requires 'MouseX::Types' => '0.05';
requires 'Scalar::Util' => 1.19;
requires 'File::Copy' => 0;
requires 'File::Spec::Unix' => 3.2701;
requires 'CGI::Simple::Cookie' => 1.103;
requires 'HTTP::Body' => '1.05';
requires 'HTTP::Headers::Fast' => 0.11;
requires 'URI' => 1.36;
# prevent tests from failing with HTTP::Server::Simple is present, but
# but the version is too old. It has no real further dependencies anyway.
requires 'HTTP::Server::Simple' => 0.35;
features(
'Interface::FCGI' => [
-default => 0,
recommends_hack('FCGI' => 0.67),
],
'Interface::ServerSimple' => [
-default => 0,
recommends_hack('HTTP::Server::Simple' => 0.34),
],
'Interface::Standalone' => [
-default => 0,
recommends_hack('Errno' => 1.0901),
recommends_hack('IO::Socket::INET' => 1.31),
],
'Interface::Test' => [
-default => 0,
recommends_hack('IO::Scalar' => 2.110),
],
'Interface::POE' => [
-default => 0,
recommends_hack('POE' => '1.0003'),
recommends_hack('POE::Filter::HTTPD' => 1.2387),
],
);
my @tests;
if (HAVE_MP) {
Apache::TestMM::filter_args();
Apache::TestMM::generate_script('t/TEST');
@tests = qw( t/*.t t/*/*.t t/modperl/basic.t t/modperl/whole.t );
} else {
@tests = qw( t/*.t t/*/*.t );
author_tests('xt');
}
if (HAVE_MOOSE) {
my $tests =
join ' ', (
@tests,
(map {
my $t = $_;
$t =~ s/(?:basic|whole).t/*.t/;
$t =~ s{^t/}{t/moose/};
($t eq 't/moose/*.t' || $t eq 't/moose/modperl/*.t') ? () : $t;
} @tests)
);
tests($tests);
} else {
tests(join ' ', @tests);
}
test_requires 'YAML'; # Test::Base requires this
test_requires 'Test::More';
test_requires 'IO::Scalar';
test_requires 'File::Temp' => '0.20';
test_requires 'HTTP::Request::AsCGI';
test_requires 'Test::SharedFork' => 0.11;
test_requires 'Test::TCP' => 0.16;
test_requires 'IO::Socket' => 1.30;
test_requires 'IO::Socket::INET';
test_requires 'IO::File' => 1.14;
author_requires 'POE';
author_requires 'Net::Server::Single';
author_requires 'Moose';
author_requires 'MooseX::Types';
use_test_base;
include_deps 'Test::TCP';
auto_set_repository;
WriteAll;
# generate moose's test
if (HAVE_MOOSE) {
$| = 1;
print "Generating tests with Moose: this could take up to minutes ";
my @testfiles;
require File::Find;
require File::Path;
require File::Spec;
File::Path::rmtree(File::Spec->catfile( 't', 'moose' ));
File::Find::find(
sub {
return if $File::Find::dir =~ /\./ || /^\./; # skip dot directory
return unless -f $_;
my @dirs = File::Spec->splitpath( $File::Find::dir );
while (!!!$dirs[0]) {
shift @dirs;
}
shift @dirs;
return if $dirs[0] eq 'xxx'; # skip to moose's test directory remover
push @testfiles, [ $File::Find::dir, File::Spec->catfile( 't', 'moose', @dirs ), $_ ];
}, 't'
);
for my $stuff (@testfiles) {
File::Path::mkpath($stuff->[1]);
my $from = File::Spec->catfile($stuff->[0], $stuff->[2]);
my $to = File::Spec->catfile($stuff->[1], $stuff->[2]);
next if $from =~ /modperl.+post\.t$/;
open my $from_fh, '<', $from;
open my $to_fh, '>', $to;
if ($to =~ /\.t$/) {
print $to_fh "BEGIN { \$ENV{ANY_MOOSE} = 'Moose' }\n";
}
while (<$from_fh>) {
print $to_fh $_;
}
}
print "... done\n";
}