From 791c990f034d45d6cbd9136555bcbc7f1a77b749 Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Fri, 1 May 2015 16:31:47 -0400 Subject: [PATCH] [PASSED QA] Bug 14113: Silence t/Dates.t warnings and cleanup output. The expectation of a user not freaking out over 'Illegal date' messages is not sensible. Catch the messages, give a nicer message. Also, compress the veritical spacing on the output. TEST PLAN --------- 1) $ prove t/Dates.t -- notice Illegal date messages, and extra lines between some sectional messages. 2) Apply patch 3) $ prove t/Dates.t -- Notice how nice and clean it is? Try it with -v to see all the output, including the expected warning type messages. 4) run koha qa test tools. Test Remarks : complies with test plan. Signed-off-by: Indranil Das Gupta (L2C2 Technologies) a Signed-off-by: Kyle M Hall --- t/Dates.t | 74 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 54 insertions(+), 20 deletions(-) diff --git a/t/Dates.t b/t/Dates.t index 148bb3e..5754b95 100644 --- a/t/Dates.t +++ b/t/Dates.t @@ -4,6 +4,7 @@ use strict; use warnings; use Test::More tests => 327; +use Test::Warn; BEGIN { use FindBin; @@ -11,6 +12,26 @@ BEGIN { use_ok( 'C4::Dates', qw(format_date format_date_in_iso) ); } +sub isBadDate { + my ($tdate,$tformat) = @_; + my $retval = 0; + if (index('iso,us,metric',$tformat)>=0) { + if ($tdate =~ /^00*-/ || $tdate =~ /-00*-/ || + $tdate =~ /-00*$/ || $tdate =~ /-00* /) { + + $retval = 1; + } + } + elsif ($tformat eq 'sql') { + if ($tdate =~ /^0000/ || $tdate =~ /^....00/ || + $tdate =~ /^......00/) { + + $retval = 1; + } + } + return $retval; +} + sub describe ($$) { my $front = sprintf( "%-25s", shift ); my $tail = shift || 'FAILED'; @@ -41,31 +62,40 @@ if ($fake_syspref) { $fake_syspref or $fake_syspref = $fake_syspref_default; $C4::Dates::prefformat = $fake_syspref; # So Dates doesn't have to ask the DB anything. -diag <new->format(), "Your system preference is: $syspref" ); -print "\n"; foreach ( @{ $thash{'iso'} } ) { - ok( $val = format_date($_), "format_date('$_'): $val" ); + if (isBadDate($_,'iso')==1) { + warning_like { $val = format_date($_); } qr/Illegal date/, + "format_date('$_'): Warning as expected"; + } + else { + ok( $val = format_date($_), "format_date('$_'): $val" ); + } } foreach ( @{ $thash{$syspref} } ) { - ok( $val = format_date_in_iso($_), "format_date_in_iso('$_'): $val" ); + if (isBadDate($_,$syspref)==1) { + warning_like { $val = format_date_in_iso($_); } qr/Illegal date/, + "format_date_in_iso('$_'): Warning as expected"; + } + else { + ok( $val = format_date_in_iso($_), "format_date_in_iso('$_'): $val" ); + } } ok( $today0 = C4::Dates->today(), "(default) CLASS ->today : $today0" ); -diag "\nTesting " . scalar(@formats) . " formats.\nTesting no input (defaults):\n"; -print "\n"; +#diag "Testing " . scalar(@formats) . " formats.\nTesting no input (defaults):"; foreach (@formats) { my $pre = sprintf '(%-6s)', $_; ok( $date = C4::Dates->new(), "$pre Date Creation : new()" ); @@ -73,14 +103,20 @@ foreach (@formats) { ok( $format = $date->visual(), "$pre visual() : " . ( $format || 'FAILED' ) ); ok( $today = $date->output(), "$pre output() : " . ( $today || 'FAILED' ) ); ok( $today = $date->today(), "$pre object->today : " . ( $today || 'FAILED' ) ); - print "\n"; } -diag "\nTesting with valid inputs:\n"; +#diag "Testing with valid inputs:"; foreach $format (@formats) { my $pre = sprintf '(%-6s)', $format; foreach my $testval ( @{ $thash{$format} } ) { - ok( $date = C4::Dates->new( $testval, $format ), "$pre Date Creation : new('$testval','$format')" ); + if (isBadDate($testval,$format)==1) { + warning_like { $date = C4::Dates->new( $testval, $format ) } + qr/Illegal date/, + "$pre Date Creation : new('$testval','$format') -- Warning as expected."; + } + else { + ok( $date = C4::Dates->new( $testval, $format ), "$pre Date Creation : new('$testval','$format')" ); + } ok( $re = $date->regexp, "$pre has regexp()" ); ok( $testval =~ /^$re$/, "$pre has regexp() match $testval" ); ok( $val = $date->output(), describe( "$pre output()", $val ) ); @@ -98,11 +134,10 @@ foreach $format (@formats) { ok( $val = $date->output(), describe( "$pre output()", $val ) ); # ok($format eq ($format = $date->format()), "$pre format() : $format" ); - print "\n"; } } -diag "\nTesting object independence from class\n"; +#diag "Testing object independence from class"; my $in1 = '12/25/1952'; # us my $in2 = '13/01/2001'; # metric my $d1 = C4::Dates->new( $in1, 'us' ); @@ -110,4 +145,3 @@ my $d2 = C4::Dates->new( $in2, 'metric' ); my $out1 = $d1->output('iso'); my $out2 = $d2->output('iso'); ok( $out1 ne $out2, "subsequent constructors get different dataspace ($out1 != $out2)" ); -diag "done.\n"; -- 1.7.2.5