[Catalyst-commits] r10122 - in Catalyst-Runtime/5.80/trunk: lib t t/lib

t0m at dev.catalyst.perl.org t0m at dev.catalyst.perl.org
Wed May 13 18:57:45 GMT 2009


Author: t0m
Date: 2009-05-13 18:57:45 +0000 (Wed, 13 May 2009)
New Revision: 10122

Added:
   Catalyst-Runtime/5.80/trunk/t/lib/TestAppBadlyImmutable.pm
Modified:
   Catalyst-Runtime/5.80/trunk/lib/Catalyst.pm
   Catalyst-Runtime/5.80/trunk/t/plugin_new_method_backcompat.t
Log:
B::Hooks::EndOfScope eats exceptions inside the on_scope_end block. Nyomnyomnyom. Ergo we were never seeing the die. A warning is good enough for now. Also add some more bleeding tests to prove that you really are not immutable till end of package

Modified: Catalyst-Runtime/5.80/trunk/lib/Catalyst.pm
===================================================================
--- Catalyst-Runtime/5.80/trunk/lib/Catalyst.pm	2009-05-13 18:37:25 UTC (rev 10121)
+++ Catalyst-Runtime/5.80/trunk/lib/Catalyst.pm	2009-05-13 18:57:45 UTC (rev 10122)
@@ -1102,7 +1102,7 @@
     B::Hooks::EndOfScope::on_scope_end {
         my $meta = Class::MOP::get_metaclass_by_name($class);
         if ( $meta->is_immutable && ! { $meta->immutable_options }->{inline_constructor} ) {
-            die "You made your application class ($class) immutable, "
+            warn "You made your application class ($class) immutable, "
                 . "but did not inline the constructor.\n"
                 . "This will break catalyst, please pass "
                 . "(replace_constructor => 1) when making your class immutable.\n";

Added: Catalyst-Runtime/5.80/trunk/t/lib/TestAppBadlyImmutable.pm
===================================================================
--- Catalyst-Runtime/5.80/trunk/t/lib/TestAppBadlyImmutable.pm	                        (rev 0)
+++ Catalyst-Runtime/5.80/trunk/t/lib/TestAppBadlyImmutable.pm	2009-05-13 18:57:45 UTC (rev 10122)
@@ -0,0 +1,12 @@
+package TestAppBadlyImmutable;
+use Catalyst qw/+TestPluginWithConstructor/;
+use Test::More;
+
+__PACKAGE__->setup;
+
+ok !__PACKAGE__->meta->is_immutable, 'Am not already immutable';
+__PACKAGE__->meta->make_immutable( inline_constructor => 0 );
+ok __PACKAGE__->meta->is_immutable, 'Am now immutable';
+
+1;
+

Modified: Catalyst-Runtime/5.80/trunk/t/plugin_new_method_backcompat.t
===================================================================
--- Catalyst-Runtime/5.80/trunk/t/plugin_new_method_backcompat.t	2009-05-13 18:37:25 UTC (rev 10121)
+++ Catalyst-Runtime/5.80/trunk/t/plugin_new_method_backcompat.t	2009-05-13 18:57:45 UTC (rev 10122)
@@ -8,7 +8,7 @@
 # that plugins don't get it wrong for us.
 
 # Also tests method modifiers and etc in MyApp.pm still work as expected.
-use Test::More tests => 6;
+use Test::More tests => 8;
 use Test::Exception;
 use Moose::Util qw/find_meta/;
 use FindBin;
@@ -21,14 +21,9 @@
 ok request('/foo')->is_success, 'Can get /foo';
 is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';
 
-throws_ok {
-    package TestAppBadlyImmutable;
-    use Catalyst qw/+TestPluginWithConstructor/;
+my $warning;
+local $SIG{__WARN__} = sub { $warning = $_[0] };
+eval "use TestAppBadlyImmutable;";
+like $warning, qr/\QYou made your application class (TestAppBadlyImmutable) immutable/,
+    'An application class that is already immutable but does not inline the constructor warns at ->setup';
 
-    TestAppBadlyImmutable->setup;
-
-    __PACKAGE__->meta->make_immutable( inline_constructor => 0 );
-}
-    qr/\QYou made your application class (TestAppBadlyImmutable) immutable/,
-    'An application class that is already immutable but does not inline the constructor dies at ->setup';
-




More information about the Catalyst-commits mailing list