From fe917ac816b9e7af586c58c6ec7a4ebd368c297e Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
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 <veron@veron.ch>
---
 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