X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FTest.pm;h=d5fb8a748da0b660310ef3b28b34fbb3bcd256f9;hb=c462faf09f20b2fca60bb9c63bf30b158760aa2c;hp=fb6f26e271fdbd01ebd1dca37c560f087ce8d70e;hpb=6dc87a0f8301391acfe25ee5bcaad0fe48dad559;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/Test.pm b/lib/Catalyst/Engine/Test.pm index fb6f26e..d5fb8a7 100644 --- a/lib/Catalyst/Engine/Test.pm +++ b/lib/Catalyst/Engine/Test.pm @@ -7,7 +7,7 @@ use Class::Struct (); use HTTP::Headers::Util 'split_header_words'; use HTTP::Request; use HTTP::Response; -use IO::File; +use File::Temp; use URI; __PACKAGE__->mk_accessors(qw/http/); @@ -69,7 +69,7 @@ sub finalize_headers { sub finalize_output { my $c = shift; - $c->http->response->content_ref( \$c->response->{output} ); + $c->http->response->content( $c->response->output ); } =item $c->prepare_connection @@ -99,7 +99,8 @@ sub prepare_headers { sub prepare_parameters { my $c = shift; - my @params = (); + my ( @params, @uploads ); + my $request = $c->http->request; push( @params, $request->uri->query_form ); @@ -119,38 +120,30 @@ sub prepare_parameters { if ( $parameters{filename} ) { - my $fh = IO::File->new_tmpfile; + my $fh = File::Temp->new( UNLINK => 0 ); $fh->write( $part->content ) or die $!; - $fh->seek( SEEK_SET, 0 ) or die $!; - - $c->req->uploads->{ $parameters{filename} } = { - fh => $fh, - size => ( stat $fh )[7], - type => $part->content_type - }; - - push( @params, $parameters{filename}, $fh ); + $fh->flush or die $!; + + my $upload = Catalyst::Request::Upload->new( + filename => $parameters{filename}, + size => ( $fh->stat )[7], + tempname => $fh->filename, + type => $part->content_type + ); + + $fh->close; + + push( @uploads, $parameters{name}, $upload ); + push( @params, $parameters{name}, $parameters{filename} ); } else { push( @params, $parameters{name}, $part->content ); } } } - - my $parameters = $c->req->parameters; - - while ( my ( $name, $value ) = splice( @params, 0, 2 ) ) { - - if ( exists $parameters->{$name} ) { - for ( $parameters->{$name} ) { - $_ = [$_] unless ref($_) eq "ARRAY"; - push( @$_, $value ); - } - } - else { - $parameters->{$name} = $value; - } - } + + $c->req->_assign_values( $c->req->parameters, \@params ); + $c->req->_assign_values( $c->req->uploads, \@uploads ); } =item $c->prepare_path @@ -209,7 +202,8 @@ sub run { unless ( ref $request ) { - my $uri = ( $request =~ m/http/i ) + my $uri = + ( $request =~ m/http/i ) ? URI->new($request) : URI->new( 'http://localhost' . $request );