Fix the meta method test
Tomas Doran [Wed, 13 May 2009 23:37:03 +0000 (23:37 +0000)]
Changes
Makefile.PL
lib/Catalyst.pm
lib/Catalyst/ClassData.pm
t/lib/TestAppWithMeta.pm [new file with mode: 0644]
t/meta_method_unneeded.t

diff --git a/Changes b/Changes
index 58e415a..06a56b4 100644 (file)
--- a/Changes
+++ b/Changes
@@ -15,6 +15,9 @@
         - Fix development server so that $c->engine->env returns the correct
           environment (t0m)
         - Require Moose 0.78 to fix metaclass incompatibility issues (t0m)
+        - Require MooseX::MethodAttributes 0.10 and use
+          Moose::Meta::Class->initialize rather than Moose->init_meta to fix
+          bugs related to having a 'meta' method in your controller (t0m)
 
 5.80003 2009-04-29 16:23:53
         - Various POD tweaks. (hdp, dandv)
index 13cb35c..bd120f0 100644 (file)
@@ -10,7 +10,7 @@ requires 'B::Hooks::EndOfScope' => '0.08';
 requires 'MooseX::Emulate::Class::Accessor::Fast' => '0.00801';
 requires 'Class::MOP' => '0.83';
 requires 'Moose' => '0.78';
-requires 'MooseX::MethodAttributes::Inheritable' => '0.09';
+requires 'MooseX::MethodAttributes::Inheritable' => '0.10';
 requires 'Carp';
 requires 'Class::C3::Adopt::NEXT' => '0.07';
 requires 'CGI::Simple::Cookie';
index 4cfd0ad..a994166 100644 (file)
@@ -1,6 +1,7 @@
 package Catalyst;
 
 use Moose;
+use Moose::Meta::Class ();
 extends 'Catalyst::Component';
 use Moose::Util qw/find_meta/;
 use bytes;
@@ -2174,7 +2175,7 @@ sub setup_components {
 sub _controller_init_base_classes {
     my ($app_class, $component) = @_;
     foreach my $class ( reverse @{ mro::get_linear_isa($component) } ) {
-        Moose->init_meta( for_class => $class )
+        Moose::Meta::Class->initialize( $class )
             unless find_meta($class);
     }
 }
index cc90c06..e4a8e54 100644 (file)
@@ -1,6 +1,7 @@
 package Catalyst::ClassData;
 
 use Moose::Role;
+use Moose::Meta::Class ();
 use Class::MOP;
 use Moose::Util ();
 
@@ -13,7 +14,7 @@ sub mk_classdata {
   my $accessor =  sub {
     my $pkg = ref $_[0] || $_[0];
     my $meta = Moose::Util::find_meta($pkg) 
-        || Moose->init_meta( for_class => $pkg );
+        || Moose::Meta::Class->initialize( $pkg );
     if (@_ > 1) {
       $meta->namespace->{$attribute} = \$_[1];
       return $_[1];
diff --git a/t/lib/TestAppWithMeta.pm b/t/lib/TestAppWithMeta.pm
new file mode 100644 (file)
index 0000000..e23a0e8
--- /dev/null
@@ -0,0 +1,13 @@
+package TestAppWithMeta;
+use strict;
+use warnings;
+use Catalyst;
+
+no warnings 'redefine';
+sub meta {}
+use warnings 'redefine';
+
+__PACKAGE__->setup;
+
+1;
+
index 6820f3f..aa43472 100644 (file)
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 use FindBin qw/$Bin/;
 use lib "$Bin/lib";
-use Test::More tests => 2;
+use Test::More tests => 1;
 use Test::Exception;
 use Carp ();
 
@@ -14,16 +14,6 @@ use Carp ();
 # This is/was demonstrated by Catalyst::Controller::WrapCGI
 # and Catalyst::Plugin::Cache::Curried
 
-{    
-    package TestAppWithMeta;
-    use Catalyst;
-    no warnings 'redefine';
-    sub meta {}
-}
-BEGIN {
-    lives_ok { TestAppWithMeta->setup } 'Can setup an app which defines its own meta method';
-}
-
 use Catalyst::Test 'TestAppWithMeta';
 
 ok( request('/')->is_success );