X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fdispatch_misc.t;h=7ad4cd858ec658eae0dc05a30796a853372cbebd;hb=efbff59469fee6c705f12a22336c9a8e2b21abc5;hp=6941513b353934236aca5b1de48e8c6cca116653;hpb=19b1ef0b2bbd6639d672d1541c635dc086b4fba2;p=catagits%2FWeb-Simple.git diff --git a/t/dispatch_misc.t b/t/dispatch_misc.t index 6941513..7ad4cd8 100644 --- a/t/dispatch_misc.t +++ b/t/dispatch_misc.t @@ -7,6 +7,7 @@ use Test::More; use HTTP::Request::Common qw(GET POST); use Web::Dispatch; use HTTP::Response; +use Web::Dispatch::Predicates 'match_true'; my @dispatch; @@ -27,6 +28,7 @@ invalid_psgi_responses(); middleware_as_only_route(); route_returns_middleware_plus_extra(); route_returns_undef(); +matcher_nonsub_pair(); done_testing(); @@ -83,6 +85,7 @@ sub invalid_psgi_responses { my @responses = ( [ [ sub { } ], "an arrayref with a single sub in it" ], [ ["moo"], "an arrayref with a scalar that is not a sub" ], + [ bless( {}, "FauxObject" ), "an object without to_app method" ], ); for my $response ( @responses ) { @@ -144,3 +147,13 @@ sub route_returns_undef { cmp_ok $get->code, '==', 900, "a route that returns undef causes WD to ignore it and resume dispatching"; } + +sub matcher_nonsub_pair { + @dispatch = ( match_true() => 5 ); + + my $get = run_request( GET => 'http://localhost/' ); + + cmp_ok $get->code, '==', 500, "a route definition that pairs a WD::Matcher a non-sub dies"; + like $get->content, qr[No idea how we got here with Web::Dispatch::M], + "the error message points out the broken definition"; +}