From: Dagfinn Ilmari Mannsåker Date: Sun, 16 Jun 2013 14:18:52 +0000 (+0100) Subject: Fix infinite recursion in tests under Catalyst 5.90040 X-Git-Tag: 1.11~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Action-REST.git;a=commitdiff_plain;h=e0323f6aad8f738558d8be6521fb0c7dee0bcf98 Fix infinite recursion in tests under Catalyst 5.90040 Instead of trying to neuter Catalyst's prohibition against multiple calls to ->setup(), just do the different tests in different files. --- diff --git a/Changes b/Changes index 6770896..1b721ed 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,5 @@ + Fix infinite recursion in tests under Catalyst 5.90040 + Mon 22 Apr 2013 14:36:53 BST - Release 1.10 Use YAML rather than JSON in basic tests diff --git a/t/catalyst-request-rest-custom-nonrest-request-class.t b/t/catalyst-request-rest-custom-nonrest-request-class.t new file mode 100644 index 0000000..7bb6405 --- /dev/null +++ b/t/catalyst-request-rest-custom-nonrest-request-class.t @@ -0,0 +1,24 @@ +use strict; +use warnings; +use Test::More; +use FindBin; +use Moose (); +use lib ( "$FindBin::Bin/lib" ); + +my $test = 'Test::Catalyst::Action::REST'; + +my $meta = Moose::Meta::Class->create_anon_class( + superclasses => ['Catalyst::Request'], +); +$meta->add_method('__random_method' => sub { 42 }); + +$ENV{CAR_TEST_REQUEST_CLASS} = $meta->name; + +use_ok $test; +ok($test->request_class->does('Catalyst::TraitFor::Request::REST'), + 'Request class does Catalyst::TraitFor::Request::REST'); +isnt $test->request_class, $meta->name, 'Different request class'; +ok $test->request_class->can('__random_method'), 'Is right class'; +ok $test->request_class->can('data'), 'Also smells like REST subclass'; + +done_testing; diff --git a/t/catalyst-request-rest-custom-rest-request-class.t b/t/catalyst-request-rest-custom-rest-request-class.t new file mode 100644 index 0000000..8b30e6e --- /dev/null +++ b/t/catalyst-request-rest-custom-rest-request-class.t @@ -0,0 +1,24 @@ +use strict; +use warnings; +use Test::More; +use FindBin; +use Moose (); +use lib ( "$FindBin::Bin/lib" ); + +my $test = 'Test::Catalyst::Action::REST'; + +my $meta = Moose::Meta::Class->create_anon_class( + # The test app has ForBrowsers actions, so we need that to not have + # the request class replaced + superclasses => ['Catalyst::Request::REST::ForBrowsers'], +); + +$ENV{CAR_TEST_REQUEST_CLASS} = $meta->name; + +use_ok $test; +ok($test->request_class->does('Catalyst::TraitFor::Request::REST'), + 'Request class does Catalyst::TraitFor::Request::REST'); +is $test->request_class, $meta->name, 'Request class kept'; +ok $test->request_class->can('data'), 'Also smells like REST subclass'; + +done_testing; diff --git a/t/catalyst-traitfor-request-rest.t b/t/catalyst-traitfor-request-rest.t index e6c498c..93e8ba6 100644 --- a/t/catalyst-traitfor-request-rest.t +++ b/t/catalyst-traitfor-request-rest.t @@ -182,36 +182,6 @@ for my $class ( $anon_class, 'Catalyst::Request::REST' ) { } } -{ - local %ENV=%ENV; - $ENV{CATALYST_DEBUG} = 0; - my $test = 'Test::Catalyst::Action::REST'; - use_ok $test; - ok($test->request_class->does('Catalyst::TraitFor::Request::REST'), - 'Request does Catalyst::TraitFor::Request::REST'); - - my $meta = Moose::Meta::Class->create_anon_class( - superclasses => ['Catalyst::Request'], - ); - $meta->add_method('__random_method' => sub { 42 }); - - $test->request_class($meta->name); - # FIXME - setup_finished(0) is evil! - eval { $test->setup_finished(0); $test->setup }; - ok !$@, 'Can setup again'; - isnt $test->request_class, $meta->name, 'Different request class'; - ok $test->request_class->can('__random_method'), 'Is right class'; - ok $test->request_class->can('data'), 'Also smells like REST subclass'; - - { - package My::Request; - use base 'Catalyst::Request::REST'; - } - $test->request_class('My::Request'); - eval { $test->setup_finished(0); $test->setup }; - is $@, '', 'no error from Request::REST subclass'; -} - done_testing; package MockContext; diff --git a/t/lib/Test/Catalyst/Action/REST.pm b/t/lib/Test/Catalyst/Action/REST.pm index 0b992b7..95ed5bf 100644 --- a/t/lib/Test/Catalyst/Action/REST.pm +++ b/t/lib/Test/Catalyst/Action/REST.pm @@ -16,6 +16,8 @@ __PACKAGE__->config( content_type_stash_key => 'serialize_content_type', }, ); +__PACKAGE__->request_class($ENV{CAR_TEST_REQUEST_CLASS}) + if $ENV{CAR_TEST_REQUEST_CLASS}; __PACKAGE__->setup; __PACKAGE__->log( Test::Catalyst::Log->new ) unless __PACKAGE__->debug;