From 7f4e9541cfa0a2a3aaf431ff32703e72fe3c878c Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Sat, 11 Oct 2014 20:02:35 -0400 Subject: [PATCH] Bug 13075 - Silence warnings and improve Charset testing. Calls to C4/Charset.pm's NormalizeString function with an undefined string were triggering warnings when running: prove -v t/db_dependent/Holds.t Sadly, t/Charset.t was also lacking calls to NormalizeString. TEST PLAN --------- 1) prove -v t/db_dependent/Holds.t -- This should generate the uninitialized string warnings. Make sure CPL and MPL are in your branches to save yourself from headaches due to expected data. 2) cat t/Charset.t -- note there are no function calls to NormalizeString. You can see other shortfalls in the tests beyond NormalizeString with: grep ^sub C4/Charset.pm 3) prove -v t/Charset.t 4) Apply patch 5) prove -v t/Charset.t -- Run as before with more tests. 6) cat t/Charset.t -- note there are now function calls to NormalizeString. 7) prove -v t/db_dependent/Holds.t -- Nice and clean run! :) 8) koha-qa.pl -v 2 -c 1 -- all should be Ok. --- C4/Charset.pm | 1 + t/Charset.t | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/C4/Charset.pm b/C4/Charset.pm index 2950a71..71afa42 100644 --- a/C4/Charset.pm +++ b/C4/Charset.pm @@ -178,6 +178,7 @@ Sample code : sub NormalizeString{ my ($string,$nfd,$transform)=@_; + return $string unless defined($string); # force scalar context return. utf8::decode($string) unless (utf8::is_utf8($string)); if ($nfd){ $string= NFD($string); diff --git a/t/Charset.t b/t/Charset.t index 27b2a32..d94bf09 100755 --- a/t/Charset.t +++ b/t/Charset.t @@ -17,13 +17,22 @@ use Modern::Perl; -use Test::More tests => 10; +use Test::More tests => 15; use MARC::Record; BEGIN { use_ok('C4::Charset'); } +my $string; +ok(!defined(NormalizeString($string,undef,1)),'Uninitialized string case 1 normalizes to uninitialized string.'); + +$string = 'Sample'; +ok(defined(NormalizeString($string,undef,0)), 'Initialized string case 1 normalizes to some string.'); +ok(defined(NormalizeString($string,undef,1)), 'Initialized string case 2 normalizes to some string.'); +ok(defined(NormalizeString($string,1,0)), 'Initialized string case 3 normalizes to some string.'); +ok(defined(NormalizeString($string,1,1)), 'Initialized string case 4 normalizes to some string.'); + my $octets = "abc"; ok(IsStringUTF8ish($octets), "verify octets are valid UTF-8 (ASCII)"); -- 1.7.9.5