From: Tomas Doran Date: Sat, 21 Mar 2009 14:16:33 +0000 (+0000) Subject: Add the test from r9505, move the new method out of the POD where patch put it, and... X-Git-Tag: 5.80001~60 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=7ffc9d9d18843e5acb36e05bab693b9a35631f00 Add the test from r9505, move the new method out of the POD where patch put it, and change to use _dispatch_types to suppress warning --- diff --git a/lib/Catalyst/Dispatcher.pm b/lib/Catalyst/Dispatcher.pm index e5b3d22..0f632e6 100644 --- a/lib/Catalyst/Dispatcher.pm +++ b/lib/Catalyst/Dispatcher.pm @@ -32,8 +32,8 @@ has _registered_dispatch_types => (is => 'rw', default => sub { {} }, required = has _method_action_class => (is => 'rw', default => 'Catalyst::Action'); has _action_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} }); has _container_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} }); - has preload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@PRELOAD] }); + has postload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@POSTLOAD] }); # Wrap accessors so you can assign a list and it will capture a list ref. @@ -641,6 +641,20 @@ sub _load_dispatch_types { return @loaded; } +# Dont document this until someone else is happy with beaviour. Ash 2009/03/16 +sub dispatch_type { + my ($self, $name) = @_; + + unless ($name =~ s/^\+//) { + $name = "Catalyst::DispatchType::" . $name; + } + + for (@{ $self->_dispatch_types }) { + return $_ if ref($_) eq $name; + } + return undef; +} + use Moose; # 5.70 backwards compatibility hacks. @@ -687,20 +701,6 @@ __PACKAGE__->meta->make_immutable; Provided by Moose -# Dont document this until someone else is happy with beaviour. Ash 2009/03/16 -sub dispatch_type { - my ($self, $name) = @_; - - unless ($name =~ s/^\+//) { - $name = "Catalyst::DispatchType::" . $name; - } - - for (@{ $self->dispatch_types }) { - return $_ if ref($_) eq $name; - } - return undef; -} - =head1 AUTHORS Catalyst Contributors, see Catalyst.pm diff --git a/t/unit_core_action_chained.t b/t/unit_core_action_chained.t new file mode 100644 index 0000000..1d4f4a8 --- /dev/null +++ b/t/unit_core_action_chained.t @@ -0,0 +1,26 @@ +#!perl + +use strict; +use warnings; + +use FindBin; +use lib "$FindBin::Bin/lib"; + +use Test::More tests => 3; + + +use TestApp; + +my $dispatch_type = TestApp->dispatcher->dispatch_type('Chained'); +isa_ok($dispatch_type, "Catalyst::DispatchType::Chained", "got dispatch type"); + +# This test was failing due to recursion/OOM. set up an alarm so things dont +# runaway +local $SIG{ALRM} = sub { + ok(0, "Chained->list didn't loop"); + die "alarm expired - test probably looping"; +}; +alarm 10; + +$dispatch_type->list("TestApp"); +ok(1, "Chained->list didn't loop");