/Makefile.PL

http://github.com/http-engine/HTTP-Engine · Perl · 178 lines · 148 code · 27 blank · 3 comment · 20 complexity · 79b2b8d5e4abcdc6472ab14a035579b8 MD5 · raw file

  1. use inc::Module::Install;
  2. BEGIN
  3. {
  4. eval {
  5. die "not testing mod_perl" unless $ENV{TEST_MODPERL};
  6. require mod_perl2;
  7. require Apache::Test;
  8. };
  9. {
  10. no strict 'refs';
  11. *HAVE_MP = $@ ? sub { 0 } : sub { 1 };
  12. }
  13. if (!$ENV{SHIPIT} && eval {
  14. require Moose && Moose->VERSION(
  15. '0.73'
  16. ) && require MooseX::Types
  17. }) {
  18. *HAVE_MOOSE = sub { 1 };
  19. } else {
  20. *HAVE_MOOSE = sub { 0 };
  21. }
  22. }
  23. if (HAVE_MP) {
  24. require Apache::TestMM;
  25. Apache::TestMM->import(qw(clean test));
  26. }
  27. {
  28. no warnings 'redefine';
  29. *recommends_hack = $Module::Install::VERSION > 0.70 ?
  30. sub { recommends(@_); $_[0] } :
  31. \&recommends;
  32. }
  33. name 'HTTP-Engine';
  34. all_from 'lib/HTTP/Engine.pm';
  35. requires 'Any::Moose' => '0.13';
  36. requires 'Mouse' => '0.62';
  37. requires 'MouseX::Types' => '0.05';
  38. requires 'Scalar::Util' => 1.19;
  39. requires 'File::Copy' => 0;
  40. requires 'File::Spec::Unix' => 3.2701;
  41. requires 'CGI::Simple::Cookie' => 1.103;
  42. requires 'HTTP::Body' => '1.05';
  43. requires 'HTTP::Headers::Fast' => 0.11;
  44. requires 'URI' => 1.36;
  45. # prevent tests from failing with HTTP::Server::Simple is present, but
  46. # but the version is too old. It has no real further dependencies anyway.
  47. requires 'HTTP::Server::Simple' => 0.35;
  48. features(
  49. 'Interface::FCGI' => [
  50. -default => 0,
  51. recommends_hack('FCGI' => 0.67),
  52. ],
  53. 'Interface::ServerSimple' => [
  54. -default => 0,
  55. recommends_hack('HTTP::Server::Simple' => 0.34),
  56. ],
  57. 'Interface::Standalone' => [
  58. -default => 0,
  59. recommends_hack('Errno' => 1.0901),
  60. recommends_hack('IO::Socket::INET' => 1.31),
  61. ],
  62. 'Interface::Test' => [
  63. -default => 0,
  64. recommends_hack('IO::Scalar' => 2.110),
  65. ],
  66. 'Interface::POE' => [
  67. -default => 0,
  68. recommends_hack('POE' => '1.0003'),
  69. recommends_hack('POE::Filter::HTTPD' => 1.2387),
  70. ],
  71. );
  72. my @tests;
  73. if (HAVE_MP) {
  74. Apache::TestMM::filter_args();
  75. Apache::TestMM::generate_script('t/TEST');
  76. @tests = qw( t/*.t t/*/*.t t/modperl/basic.t t/modperl/whole.t );
  77. } else {
  78. @tests = qw( t/*.t t/*/*.t );
  79. author_tests('xt');
  80. }
  81. if (HAVE_MOOSE) {
  82. my $tests =
  83. join ' ', (
  84. @tests,
  85. (map {
  86. my $t = $_;
  87. $t =~ s/(?:basic|whole).t/*.t/;
  88. $t =~ s{^t/}{t/moose/};
  89. ($t eq 't/moose/*.t' || $t eq 't/moose/modperl/*.t') ? () : $t;
  90. } @tests)
  91. );
  92. tests($tests);
  93. } else {
  94. tests(join ' ', @tests);
  95. }
  96. test_requires 'YAML'; # Test::Base requires this
  97. test_requires 'Test::More';
  98. test_requires 'IO::Scalar';
  99. test_requires 'File::Temp' => '0.20';
  100. test_requires 'HTTP::Request::AsCGI';
  101. test_requires 'Test::SharedFork' => 0.11;
  102. test_requires 'Test::TCP' => 0.16;
  103. test_requires 'IO::Socket' => 1.30;
  104. test_requires 'IO::Socket::INET';
  105. test_requires 'IO::File' => 1.14;
  106. author_requires 'POE';
  107. author_requires 'Net::Server::Single';
  108. author_requires 'Moose';
  109. author_requires 'MooseX::Types';
  110. use_test_base;
  111. include_deps 'Test::TCP';
  112. auto_set_repository;
  113. WriteAll;
  114. # generate moose's test
  115. if (HAVE_MOOSE) {
  116. $| = 1;
  117. print "Generating tests with Moose: this could take up to minutes ";
  118. my @testfiles;
  119. require File::Find;
  120. require File::Path;
  121. require File::Spec;
  122. File::Path::rmtree(File::Spec->catfile( 't', 'moose' ));
  123. File::Find::find(
  124. sub {
  125. return if $File::Find::dir =~ /\./ || /^\./; # skip dot directory
  126. return unless -f $_;
  127. my @dirs = File::Spec->splitpath( $File::Find::dir );
  128. while (!!!$dirs[0]) {
  129. shift @dirs;
  130. }
  131. shift @dirs;
  132. return if $dirs[0] eq 'xxx'; # skip to moose's test directory remover
  133. push @testfiles, [ $File::Find::dir, File::Spec->catfile( 't', 'moose', @dirs ), $_ ];
  134. }, 't'
  135. );
  136. for my $stuff (@testfiles) {
  137. File::Path::mkpath($stuff->[1]);
  138. my $from = File::Spec->catfile($stuff->[0], $stuff->[2]);
  139. my $to = File::Spec->catfile($stuff->[1], $stuff->[2]);
  140. next if $from =~ /modperl.+post\.t$/;
  141. open my $from_fh, '<', $from;
  142. open my $to_fh, '>', $to;
  143. if ($to =~ /\.t$/) {
  144. print $to_fh "BEGIN { \$ENV{ANY_MOOSE} = 'Moose' }\n";
  145. }
  146. while (<$from_fh>) {
  147. print $to_fh $_;
  148. }
  149. }
  150. print "... done\n";
  151. }