X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FTest.pm;h=0561348824c3f9a37b5955e0cff2d82981b2764f;hb=e7c0c583d6e12e822dd26bf1282eb610c9a59351;hp=429bdad738425632068e4cecab693f5242f0ec23;hpb=597d4987a6929a19b18743ba111a6b55f2b3b496;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/Test.pm b/lib/Catalyst/Engine/Test.pm index 429bdad..0561348 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/); @@ -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,29 @@ sub prepare_parameters { if ( $parameters{filename} ) { - my $fh = IO::File->new_tmpfile; + my $fh = File::Temp->new; $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 + seek( $fh, 0, 0 ) or die $!; + + my $upload = { + fh => $fh, + filename => $parameters{filename}, + size => ( stat $fh )[7], + tempname => $fh->filename, + type => $part->content_type }; - push( @params, $parameters{filename}, $fh ); + push( @uploads, $parameters{name}, $upload ); + push( @params, $parameters{name}, $fh ); } 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 +201,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 );