Bump MX::MA again, couple of little tidyups
Tomas Doran [Tue, 28 Apr 2009 08:53:13 +0000 (08:53 +0000)]
Changes
Makefile.PL
lib/Catalyst.pm
t/aggregate/live_component_controller_moose.t
t/lib/TestApp/Controller/Moose.pm

diff --git a/Changes b/Changes
index 3f4ad7f..12e23a0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -8,11 +8,11 @@
           AGGREGATE_TESTS environment variable is set and a recent
           Test::Aggregate is available. (rafl)
         - POD formatting fix for Catalyst::Test (Dan Dascalescu)
-        - Bump to MooseX::MethodAttributes 0.08, to gain the 
+        - Bump to MooseX::MethodAttributes 0.09, to gain the 
           get_nearest_methods_with_attributes method allowing methods without
-          attributes in a subclass to override those with attributes in a superclass.
-          This fixes CatalystX::CRUD's method of overriding/disabling functionality
-          base controllers (t0m).
+          attributes in a subclass to override those with attributes in a 
+          superclass. This fixes CatalystX::CRUD's method of overriding /
+          disabling functionality from base controllers (t0m).
 
 5.80002 2009-04-22 01:28:36
         - Fix CATALYST_DEBUG and MYAPP_DEBUG environment variables
index ccee09b..e9e9b7f 100644 (file)
@@ -9,7 +9,7 @@ requires 'namespace::clean';
 requires 'Scope::Upper' => '0.06';
 requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00801';
 requires 'Moose' => '0.73';
-requires 'MooseX::MethodAttributes::Inheritable' => '0.08';
+requires 'MooseX::MethodAttributes::Inheritable' => '0.09';
 requires 'Carp';
 requires 'Class::C3::Adopt::NEXT' => '0.07';
 requires 'Class::MOP' => '0.79';
index a9b1801..066339c 100644 (file)
@@ -3,6 +3,7 @@ package Catalyst;
 use Moose;
 extends 'Catalyst::Component';
 use Moose::Util qw/find_meta/;
+use Moose::Util::MetaRole ();
 use bytes;
 use Scope::Upper ();
 use Catalyst::Exception;
@@ -2166,8 +2167,9 @@ sub setup_components {
 =cut
 
 sub _controller_init_base_classes {
-    my ($class, $component) = @_;
+    my ($app_class, $component) = @_;
     foreach my $class ( reverse @{ mro::get_linear_isa($component) } ) {
+        next unless $class =~ /^$app_class/;
         Moose->init_meta( for_class => $class )
             unless find_meta($class);
     }
index 1f24a16..74d2fee 100644 (file)
@@ -4,23 +4,33 @@ use warnings;
 use FindBin;
 use lib "$FindBin::Bin/../lib";
 
-use Test::More tests => 7;
+use Test::More tests => 12;
 use Catalyst::Test 'TestApp';
 
 {
     my $response = request('http://localhost/moose/get_attribute');
     ok($response->is_success);
     is($response->content, '42', 'attribute default values get set correctly');
-    is($response->header('X-Catalyst-Test-Before'), 'before called', 'before works as expected');
 }
 
 {
-    TODO: {
-        local $TODO = 'Wrapping methods in a subclass, when the subclass contains no other methods with attributes is broken';
-        my $response = request('http://localhost/moose/methodmodifiers/get_attribute');       
-        ok($response->is_success);
-        is($response->content, '42', 'parent controller method called');
-        is($response->header('X-Catalyst-Test-Before'), 'before called', 'before works as expected');
-        is($response->header('X-Catalyst-Test-After'), 'after called', 'after works as expected');
-    }
+    my $response = request('http://localhost/moose/methodmodifiers/get_attribute');       
+    ok($response->is_success);
+    is($response->content, '42', 'parent controller method called');
+    is($response->header('X-Catalyst-Test-After'), 'after called', 'after works as expected');
+}
+
+{
+    my $response = request('http://localhost/moose/with_local_modifier');
+    ok($response->is_success);
+    is($response->content, '42', 'attribute default values get set correctly');
+    is($response->header('X-Catalyst-Test-Before'), 'before called', 'before works as expected');
+}
+{
+    my $response = request('http://localhost/moose/methodmodifiers/with_local_modifier');
+    ok($response->is_success);
+    is($response->content, '42', 'attribute default values get set correctly');
+    is($response->header('X-Catalyst-Test-After'), 'after called', 'after works as expected');
+    is($response->header('X-Catalyst-Test-Before'), 'before called', 'before works as expected');
 }
+
index c03829a..705b2bd 100644 (file)
@@ -20,7 +20,12 @@ sub get_attribute : Local {
     $c->response->body($self->attribute);
 }
 
-before get_attribute => sub {
+sub with_local_modifier : Local {
+    my ($self, $c) = @_;
+    $c->forward('get_attribute');
+}
+
+before with_local_modifier => sub {
     my ($self, $c) = @_;
     $c->response->header( 'X-Catalyst-Test-Before' => 'before called' );
 };