stas        01/09/17 19:00:19

  Added:       t/directive perlrequire.t
               t/response/TestDirective perlrequire.pm
  Log:
  - add a PerlRequire test
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/directive/perlrequire.t
  
  Index: perlrequire.t
  ===================================================================
  # this test tests PerlRequire configuration directive
  ########################################################################
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test;
  use Apache::TestUtil;
  use Apache::TestRequest ();
  
  my %checks =
      (
       'default'                    => 'PerlRequired by Parent',
       'TestDirective::perlrequire' => 'PerlRequired by VirtualHost',
      );
  
  plan tests => scalar keys %checks;
  
  for my $module (sort keys %checks) {
      Apache::TestRequest::module($module);
  
      my $config   = Apache::Test::config();
      my $hostport = Apache::TestRequest::hostport($config);
      print "connecting to $hostport\n";
  
      ok t_cmp(
               $checks{$module},
               $config->http_raw_get("/TestDirective::perlrequire", undef),
               "testing PerlRequire in $module",
              );
  }
  
  
  
  1.1                  modperl-2.0/t/response/TestDirective/perlrequire.pm
  
  Index: perlrequire.pm
  ===================================================================
  package TestDirective::perlrequire;
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::Test ();
  use Apache::Const -compile => 'OK';
  use File::Spec::Functions qw(catfile);
  
  sub handler {
      my $r = shift;
  
      $r->content_type('text/plain');
      $r->puts($My::PerlRequireTest::MAGIC || '');
  
      Apache::OK;
  }
  
  my %require_tests = 
      (
       main => 'PerlRequired by Parent',
       vh   => 'PerlRequired by VirtualHost',
      );
  
  sub APACHE_TEST_CONFIGURE {
      my ($class, $self) = @_;
  
      my $vars = $self->{vars};
      my $target_dir = catfile $vars->{documentroot}, 'testdirective';
  
      # create two different PerlRequireTest.pm packages to be loaded by
      # vh and main interpreters, on the fly before the tests start
      while (my($test, $magic) = each %require_tests) {
          my $content = <<EOF;
  package My::PerlRequireTest;
  \$My::PerlRequireTest::MAGIC = '$magic';
  1;
  EOF
          my $file = catfile $target_dir, $test, 'PerlRequireTest.pm';
          $self->writefile($file, $content, 1);
      }
  }
  
  1;
  __END__
  PerlSwitches -Mlib=@documentroot@/testdirective/main
  PerlRequire "PerlRequireTest.pm"
  
  <VirtualHost TestDirective::perlrequire>
  
    # a new interpreter pool
    PerlOptions +Parent
  
    # use test system's @INC
    PerlSwitches -Mlib=@serverroot@
    PerlRequire "conf/modperl_startup.pl"
  
    PerlSwitches -Mlib=@documentroot@/testdirective/vh
    PerlRequire "PerlRequireTest.pm"
  
    <Location /TestDirective::perlrequire>
       SetHandler modperl
       PerlResponseHandler TestDirective::perlrequire
    </Location>
  </VirtualHost>
  
  
  


Reply via email to