From: Tomas Doran Date: Tue, 30 Jun 2009 20:35:40 +0000 (+0000) Subject: Core fix for warnings due to undef body as per fix in FillInForm in r10745 X-Git-Tag: 5.80007~5 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=6e444c5c34916bc8ee2c162ab9efe45e1c95d102 Core fix for warnings due to undef body as per fix in FillInForm in r10745 --- diff --git a/Changes b/Changes index fce312b..648ea80 100644 --- a/Changes +++ b/Changes @@ -5,6 +5,7 @@ - Tests for this (Byron Young + Amir Sadoughi) - Inherited controller methods can now be specified in config->{action(s)} + - Assigning an undef response body no longer produces warnings New features: - Add optional second argument to uri_with which appends to existing diff --git a/lib/Catalyst/Response.pm b/lib/Catalyst/Response.pm index a6328d5..595decb 100644 --- a/lib/Catalyst/Response.pm +++ b/lib/Catalyst/Response.pm @@ -6,7 +6,14 @@ use HTTP::Headers; with 'MooseX::Emulate::Class::Accessor::Fast'; has cookies => (is => 'rw', default => sub { {} }); -has body => (is => 'rw', default => '', lazy => 1, predicate => 'has_body'); +has body => (is => 'rw', default => '', lazy => 1, predicate => 'has_body', + clearer => '_clear_body' +); +after 'body' => sub { # If someone assigned undef, clear the body so we get '' + if (scalar(@_) == 2 && !defined($_[1])) { + $_[0]->_clear_body; + } +}; has location => (is => 'rw'); has status => (is => 'rw', default => 200); has finalized_headers => (is => 'rw', default => 0); diff --git a/t/unit_response.t b/t/unit_response.t index 4d2317c..31e397a 100644 --- a/t/unit_response.t +++ b/t/unit_response.t @@ -1,6 +1,6 @@ use strict; use warnings; -use Test::More tests => 4; +use Test::More tests => 6; use_ok('Catalyst::Response'); @@ -12,3 +12,7 @@ is($res->code, 500, 'code sets itself'); is($res->status, 500, 'code sets status'); $res->status(501); is($res->code, 501, 'status sets code'); +is($res->body, '', "default response body ''"); +$res->body(undef); +is($res->body, '', "response body '' after assigned undef"); +