better error messages when the middleware does not exist
John Napiorkowski [Wed, 18 Dec 2013 14:56:04 +0000 (08:56 -0600)]
lib/Catalyst/Utils.pm
t/bad_middleware_error.t [new file with mode: 0644]

index fffa048..81ab727 100644 (file)
@@ -457,6 +457,8 @@ sub build_middleware {
           return $ns->new(@init_args);
         } elsif(Class::Load::try_load_class("Plack::Middleware::$namespace")) { ## Act like Plack::Builder
           return "Plack::Middleware::$namespace"->new(@init_args);
+        } else {
+          die "Can't load middleware via '$namespace'.  It's not ".$class."::Middleware::".$namespace." or Plack::Middleware::$namespace";
         }
     }
 
diff --git a/t/bad_middleware_error.t b/t/bad_middleware_error.t
new file mode 100644 (file)
index 0000000..7018ea9
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+
+{
+  package MyApp;
+
+  use Catalyst;
+  use Test::More;
+
+  eval {
+    __PACKAGE__->setup_middleware('DoesNotExist'); 1;
+  } || do {
+    like($@, qr/MyApp::Middleware::DoesNotExist or Plack::Middleware::DoesNotExist/);
+  };
+
+  done_testing;
+}