[Catalyst-commits] r6363 - in trunk/Catalyst-Runtime: lib t
andyg at dev.catalyst.perl.org
andyg at dev.catalyst.perl.org
Sun May 6 16:38:26 GMT 2007
Author: andyg
Date: 2007-05-06 16:38:25 +0100 (Sun, 06 May 2007)
New Revision: 6363
Modified:
trunk/Catalyst-Runtime/lib/Catalyst.pm
trunk/Catalyst-Runtime/t/live_component_controller_action_streaming.t
Log:
Don't set a content-length from a filehandle object unless it reports a positive size
Modified: trunk/Catalyst-Runtime/lib/Catalyst.pm
===================================================================
--- trunk/Catalyst-Runtime/lib/Catalyst.pm 2007-05-03 21:53:28 UTC (rev 6362)
+++ trunk/Catalyst-Runtime/lib/Catalyst.pm 2007-05-06 15:38:25 UTC (rev 6363)
@@ -1427,7 +1427,8 @@
# get the length from a filehandle
if ( blessed( $c->response->body ) && $c->response->body->can('read') )
{
- if ( my $stat = stat $c->response->body ) {
+ my $stat = stat $c->response->body;
+ if ( $stat && $stat->size > 0 ) {
$c->response->content_length( $stat->size );
}
else {
Modified: trunk/Catalyst-Runtime/t/live_component_controller_action_streaming.t
===================================================================
--- trunk/Catalyst-Runtime/t/live_component_controller_action_streaming.t 2007-05-03 21:53:28 UTC (rev 6362)
+++ trunk/Catalyst-Runtime/t/live_component_controller_action_streaming.t 2007-05-06 15:38:25 UTC (rev 6363)
@@ -10,7 +10,7 @@
BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
-use Test::More tests => 8*$iters;
+use Test::More tests => 10*$iters;
use Catalyst::Test 'TestApp';
if ( $ENV{CAT_BENCHMARK} ) {
@@ -29,6 +29,8 @@
ok( my $response = request('http://localhost/streaming'), 'Request' );
ok( $response->is_success, 'Response Successful 2xx' );
is( $response->content_type, 'text/plain', 'Response Content-Type' );
+ # XXX: Length should be undef here, but HTTP::Request::AsCGI sets it
+ is( $response->content_length, 12, 'Response Content-Length' );
is( $response->content,, <<'EOF', 'Content is a stream' );
foo
bar
@@ -40,7 +42,7 @@
SKIP:
{
if ( $ENV{CATALYST_SERVER} ) {
- skip "Using remote server", 4;
+ skip "Using remote server", 5;
}
my $file = "$FindBin::Bin/01use.t";
@@ -55,6 +57,7 @@
'Request' );
ok( $response->is_success, 'Response Successful 2xx' );
is( $response->content_type, 'text/plain', 'Response Content-Type' );
+ is( $response->content_length, -s $file, 'Response Content-Length' );
is( $response->content, $buffer, 'Content is read from filehandle' );
}
}
More information about the Catalyst-commits
mailing list