Hi.

I have submitted this issue a while back to rt.cpan.org, but I have not
gotten any response.

I am the maintainer of Apache::AuthCookie.

As most of us probably already know, Apache 2.4 has a very different
authentication API from previous Apache versions.  As a result, in order
to release a version of Apache::AuthCookie that passes tests on Apache
2.4 and previous versions, it is necessary to have conditional config
sections that are only enabled for Apache 2.4 or later.

Currently Apache::Test defines APACHE2 if running under apache 2.0 or
later.  The attached patch also defines APACHE24 if running under apache
2 with a minor version >= 4.

I shipped a patch for AuthCookie to the debian folks that works under
Apache 2.4, but I also need this patch in Apache::Test in order to make
it so that the test suite will work on all Apache versions (2.4 as well
as 2.2 and earlier)

Example in AuthCookie t/conf/extra.conf.in:

<IfDefine APACHE24>
  # Apache 2.4+ Auth API
  PerlAddAuthzProvider user My::Auth->authz
</IfDefine>
...
<IfDefine APACHE2>
  ...
  <IfDefine !APACHE24>
    # Pre Apache 2.4 Auth API.
    PerlAuthzHandler ....
  </IfDefine>
</IfDefine>

Hopefully this makes it clear why this is needed, and why I'd like to
see this in Apache::Test before mod_perl for apache 2.4 is finalized.

Regards,
Michael Schout

diff --git a/Apache-Test/lib/Apache/TestServer.pm 
b/Apache-Test/lib/Apache/TestServer.pm
index 254aec6..a3bc3ab 100644
--- a/Apache-Test/lib/Apache/TestServer.pm
+++ b/Apache-Test/lib/Apache/TestServer.pm
@@ -85,6 +85,15 @@ sub post_config {
         $self->{rev} = 0; # unknown
     }
 
+    ($self->{revminor}) = $self->{version} =~ m|/\d\.(\d)|;
+
+    if ($self->{revminor}) {
+        debug "Matched Apache revminor $self->{version} $self->{revminor}";
+    }
+    else {
+        $self->{revminor} = 0;
+    }
+
     $self;
 }
 
@@ -126,7 +135,14 @@ sub pid_file {
 
 sub dversion {
     my $self = shift;
-    "-D APACHE$self->{rev}";
+
+    my $dv = "-D APACHE$self->{rev}";
+
+    if ($self->{rev} == 2 and $self->{revminor} >= 4) {
+        $dv .= " -D APACHE24";
+    }
+
+    return $dv;
 }
 
 sub config_defines {

Reply via email to