X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FTest.pm;h=f98717246d063de19fe8121dea87f5f45c07a370;hb=955d6da66d0a5c2f770d68d9b9e5b1bd22b21750;hp=658f233b706447b84a9ef3e08722cf30b59bc65e;hpb=536bee890cf24e0e4bcda7562e7b70cc03ca0620;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Test.pm b/lib/Catalyst/Test.pm index 658f233..f987172 100644 --- a/lib/Catalyst/Test.pm +++ b/lib/Catalyst/Test.pm @@ -31,7 +31,7 @@ my $build_exports = sub { my $get = sub { $request->(@_)->content }; my $ctx_request = sub { - my $me = ref $self || $self; + my $me = ref $self || $self; ### throw an exception if ctx_request is being used against a remote ### server @@ -49,13 +49,13 @@ my $build_exports = sub { ### hook into 'dispatch' -- the function gets called after all plugins ### have done their work, and it's an easy place to capture $c. - my $meta = Catalyst->meta; + my $meta = Class::MOP::get_metaclass_by_name($class); $meta->make_mutable; $meta->add_after_method_modifier( "dispatch", sub { $c = shift; }); - $meta->make_immutable; - + $meta->make_immutable( replace_constructor => 1 ); + Class::C3::reinitialize(); # Fixes RT#46459, I've failed to write a test for how/why, but it does. ### do the request; C::T::request will know about the class name, and ### we've already stopped it from doing remote requests above. my $res = $request->( @_ ); @@ -103,6 +103,12 @@ our $default_host; sub import { my ($self, $class, $opts) = @_; + Carp::carp( +qq{Importing Catalyst::Test without an application name is deprecated:\n +Instead of saying: use Catalyst::Test; +say: use Catalyst::Test (); # If you don't want to import a test app right now. +or say: use Catalyst::Test 'MyApp'; # If you do want to import a test app.\n\n}) + unless $class; $import->($self, '-all' => { class => $class }); $opts = {} unless ref $opts eq 'HASH'; $default_host = $opts->{default_host} if exists $opts->{default_host}; @@ -156,8 +162,8 @@ L or remotely if you define the CATALYST_SERVER environment variable. This module also adds a few Catalyst-specific testing methods as displayed in the method section. -The L and L functions take either a URI or an L -object. +The L and L +functions take either a URI or an L object. =head1 INLINE TESTS WILL NO LONGER WORK @@ -187,7 +193,7 @@ Returns the content. Note that this method doesn't follow redirects, so to test for a correctly redirecting page you'll need to use a combination of this -method and the L method below: +method and the L method below: my $res = request('/'); # redirects to /y warn $res->header('location'); @@ -208,7 +214,7 @@ header configuration; currently only supports setting 'host' value. =head2 ($res, $c) = ctx_request( ... ); -Works exactly like L, except it also returns the Catalyst context object, +Works exactly like L, except it also returns the Catalyst context object, C<$c>. Note that this only works for local requests. =head2 $res = Catalyst::Test::local_request( $AppClass, $url ); @@ -228,7 +234,9 @@ sub local_request { $class->handle_request( env => \%ENV ); - return $cgi->restore->response; + my $response = $cgi->restore->response; + $response->request( $request ); + return $response; } my $agent;