don't load Catalyst::Exception in Utils.pm BEGIN, because some Scripts::* load Utils...
Robert Buels [Wed, 4 Aug 2010 20:04:14 +0000 (20:04 +0000)]
lib/Catalyst/Utils.pm
t/custom_exception_class_simple.t
t/lib/TestAppClassExceptionSimpleTest.pm

index 53bf795..d72441e 100644 (file)
@@ -1,7 +1,6 @@
 package Catalyst::Utils;
 
 use strict;
-use Catalyst::Exception;
 use File::Spec;
 use HTTP::Request;
 use Path::Class;
@@ -140,6 +139,13 @@ sub class2tempdir {
         eval { $tmpdir->mkpath };
 
         if ($@) {
+            # don't load Catalyst::Exception as a BEGIN in Utils,
+            # because Utils often gets loaded before MyApp.pm, and if
+            # Catalyst::Exception is loaded before MyApp.pm, it does
+            # not honor setting
+            # $Catalyst::Exception::CATALYST_EXCEPTION_CLASS in
+            # MyApp.pm
+            require Catalyst::Exception;
             Catalyst::Exception->throw(
                 message => qq/Couldn't create tmpdir '$tmpdir', "$@"/ );
         }
index 8c8c0c2..24983fa 100644 (file)
@@ -4,9 +4,17 @@ use strict;
 use warnings;
 use FindBin qw/$Bin/;
 use lib "$Bin/lib";
-use Test::More tests => 1;
+use Test::More tests => 2;
 use Test::Exception;
 
 lives_ok {
     require TestAppClassExceptionSimpleTest;
 } 'Can load application';
+
+
+lives_ok {
+    Catalyst::Exception->throw
+} 'throw is properly stubbed out';
+
+
+
index aef61be..cc0ba44 100644 (file)
@@ -10,6 +10,8 @@ package TestAppClassExceptionSimpleTest;
 use strict;
 use warnings;
 
+use Catalyst::Utils; #< some of the scripts use Catalyst::Utils before MyApp.pm
+
 BEGIN { $Catalyst::Exception::CATALYST_EXCEPTION_CLASS = 'TestAppClassExceptionSimpleTest::Exception'; }
 
 use Catalyst;