You are viewing a plain text version of this content. The canonical link for it is here.
Posted to test-commits@perl.apache.org by ge...@apache.org on 2005/07/11 21:44:22 UTC

svn commit: r210190 - in /perl/Apache-Test/trunk/lib/Apache: TestConfigParrot.pm TestRunParrot.pm

Author: geoff
Date: Mon Jul 11 12:44:20 2005
New Revision: 210190

URL: http://svn.apache.org/viewcvs?rev=210190&view=rev
Log:
add start of mod_parrot specific magic

Added:
    perl/Apache-Test/trunk/lib/Apache/TestConfigParrot.pm
    perl/Apache-Test/trunk/lib/Apache/TestRunParrot.pm

Added: perl/Apache-Test/trunk/lib/Apache/TestConfigParrot.pm
URL: http://svn.apache.org/viewcvs/perl/Apache-Test/trunk/lib/Apache/TestConfigParrot.pm?rev=210190&view=auto
==============================================================================
--- perl/Apache-Test/trunk/lib/Apache/TestConfigParrot.pm (added)
+++ perl/Apache-Test/trunk/lib/Apache/TestConfigParrot.pm Mon Jul 11 12:44:20 2005
@@ -0,0 +1,90 @@
+# Copyright 2001-2004 The Apache Software Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+package Apache::TestConfigParrot;
+
+#things specific to mod_parrot
+
+use strict;
+use warnings FATAL => 'all';
+use File::Spec::Functions qw(catfile splitdir abs2rel);
+use File::Find qw(finddepth);
+use Apache::TestTrace;
+use Apache::TestRequest;
+use Apache::TestConfig;
+use Apache::TestConfigPerl;
+use Config;
+
+@Apache::TestConfigParrot::ISA = qw(Apache::TestConfig);
+
+sub new {
+    return shift->SUPER::new(@_);
+}
+
+sub configure_parrot_tests_pick {
+    my($self, $entries) = @_;
+
+    for my $subdir (qw(Response)) {
+        my $dir = catfile $self->{vars}->{t_dir}, lc $subdir;
+        next unless -d $dir;
+
+        finddepth(sub {
+            return unless /\.pir$/;
+
+            my $file = catfile $File::Find::dir, $_;
+            my $module = abs2rel $file, $dir;
+            my $status = $self->run_apache_test_config_scan($file);
+            push @$entries, [$file, $module, $subdir, $status];
+        }, $dir);
+    }
+}
+
+sub configure_parrot_tests {
+    my $self = shift;
+
+    my @entries = ();
+    $self->configure_parrot_tests_pick(\@entries);
+    $self->configure_pm_tests_sort(\@entries);
+
+    my %seen = ();
+
+    for my $entry (@entries) {
+        my ($file, $module, $subdir, $status) = @$entry;
+
+        my @args = ();
+
+        my $directives = $self->add_module_config($file, \@args);
+
+        $module =~ s,\.pir$,,;
+        $module =~ s/^[a-z]://i; #strip drive if any
+        $module = join '::', splitdir $module;
+
+        my @base = map { s/^test//i; $_ } split '::', $module;
+
+        my $sub = pop @base;
+
+        debug "configuring mod_parrot test file $file";
+
+        push @args, SetHandler => 'parrot-code';
+        push @args, ParrotHandler => $module;
+
+        $self->postamble($self->location_container($module), \@args);
+
+        $self->write_pm_test($module, lc $sub, map { lc } @base);
+    }
+}
+
+1;
+
+__DATA__

Added: perl/Apache-Test/trunk/lib/Apache/TestRunParrot.pm
URL: http://svn.apache.org/viewcvs/perl/Apache-Test/trunk/lib/Apache/TestRunParrot.pm?rev=210190&view=auto
==============================================================================
--- perl/Apache-Test/trunk/lib/Apache/TestRunParrot.pm (added)
+++ perl/Apache-Test/trunk/lib/Apache/TestRunParrot.pm Mon Jul 11 12:44:20 2005
@@ -0,0 +1,67 @@
+# Copyright 2001-2004 The Apache Software Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+package Apache::TestRunParrot;
+
+use strict;
+use warnings FATAL => 'all';
+
+use File::Spec::Functions qw(catfile canonpath);
+
+use Apache::TestRun ();
+use Apache::TestConfigParse ();
+use Apache::TestTrace;
+use Apache::TestConfigParrot ();
+
+use vars qw($VERSION);
+$VERSION = '1.00'; # make CPAN.pm's r() version scanner happy
+
+use File::Spec::Functions qw(catfile);
+
+# subclass of Apache::TestRun that configures parrot things
+use vars qw(@ISA);
+@ISA = qw(Apache::TestRun);
+
+sub new_test_config {
+    my $self = shift;
+
+    Apache::TestConfigParrot->new($self->{conf_opts});
+}
+
+sub configure_parrot {
+    my $self = shift;
+
+    my $test_config = $self->{test_config};
+
+    $test_config->postamble_register(qw(configure_parrot_tests));
+}
+
+sub configure {
+    my $self = shift;
+
+    $self->configure_parrot;
+
+    $self->SUPER::configure;
+}
+
+#if Apache::TestRun refreshes config in the middle of configure
+#we need to re-add parrotconfigure hooks
+sub refresh {
+    my $self = shift;
+    $self->SUPER::refresh;
+    $self->configure_parrot;
+}
+
+1;
+__END__