From fe917ac816b9e7af586c58c6ec7a4ebd368c297e Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 11 Nov 2015 11:55:05 +0000 Subject: [PATCH] Bug 15166: Carp if an invalid date is passed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sign-off on second patch. Signed-off-by: Marc VĂ©ron --- Koha/DateUtils.pm | 1 + t/DateUtils.t | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Koha/DateUtils.pm b/Koha/DateUtils.pm index ca2ede5..e2e8cfc 100644 --- a/Koha/DateUtils.pm +++ b/Koha/DateUtils.pm @@ -205,6 +205,7 @@ sub output_pref { if $dt and $str; $dt = eval { dt_from_string( $str ) } if $str; + carp "Invalid date '$str' passed to output_pref\n" if $@; return unless defined $dt; diff --git a/t/DateUtils.t b/t/DateUtils.t index 6e8a8fc..ca60372 100755 --- a/t/DateUtils.t +++ b/t/DateUtils.t @@ -3,7 +3,7 @@ use DateTime; use DateTime::TimeZone; use C4::Context; -use Test::More tests => 58; +use Test::More tests => 59; use Test::MockModule; use Test::Warn; use Time::HiRes qw/ gettimeofday /; @@ -218,9 +218,12 @@ $dt = dt_from_string('2015-01-31 01:02:03'); is( output_pref( {dt => $dt} ), '31/01/2015 01:02', 'dt_from_string should fallback to sql format' ); # output_pref with str parameter -is( output_pref( { 'str' => $testdate_iso, dateformat => 'iso', dateonly => 1 } ), $testdate_iso, 'output_pref should handle correctly the iso parameter' ); -is( output_pref( { 'str' => 'invalid_date', dateformat => 'iso', dateonly => 1 } ), undef, 'output_pref should return undef if an invalid date is passed' ); +is( output_pref( { 'str' => $testdate_iso, dateformat => 'iso', dateonly => 1 } ), $testdate_iso, 'output_pref should handle correctly the iso parameter' ); +my $output_for_invalid_date; +warning_like { $output_for_invalid_date = output_pref( { str => 'invalid_date' } ) } + { carped => qr[^Invalid date 'invalid_date' passed to output_pref] }, + 'output_pref should carp if an invalid date is passed for the str parameter'; +is( $output_for_invalid_date, undef, 'output_pref should return undef if an invalid date is passed' ); warning_is { output_pref( { 'str' => $testdate_iso, dt => $dt, dateformat => 'iso', dateonly => 1 } ) } { carped => 'output_pref should not be called with both dt and str parameters' }, 'output_pref should carp if str and dt parameters are passed together'; - -- 1.7.10.4