Bug 18746: Text_CSV_Various parse failures

While it might be an idea to just delete it,
this patch attempts to catch everything and make it
clear that Text::CSV::Unicode (binary) is the parser
that should be used.

Signed-off-by: Lee Jamison <ldjamison@marywood.edu>
Running 'prove xt/author/Text_CSV_Various.t' passes

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Mark Tompsett 2017-06-07 18:07:13 -04:00 committed by Jonathan Druart
parent 1577460c71
commit 89d36585bb
1 changed files with 31 additions and 12 deletions

View File

@ -3,15 +3,16 @@
use strict;
use warnings;
use Test::More tests => 25;
use Test::More tests => 32;
use Test::Warn;
BEGIN {
diag "
This test demonstrates why Koha uses the CSV parser and configration it does.
Specifically, the test is for Unicode compliance in text parsing and data.
This test requires other modules that Koha doesn't actually use, in order to compare.
Therefore, running this test is not necessary to test your Koha installation.
";
diag q{
This test demonstrates why Koha uses the CSV parser and configration
it does. Specifically, the test is for Unicode compliance in text
parsing and data. This test requires other modules that Koha doesn't
actually use, in order to compare. Therefore, running this test is not
necessary to test your Koha installation.
};
use FindBin;
use lib $FindBin::Bin;
use_ok('Text::CSV');
@ -42,7 +43,9 @@ my $lines = [
];
# 010D: č LATIN SMALL LETTER C WITH CARON
# 0117: ė LATIN SMALL LETTER E WITH DOT ABOVE
diag sprintf "Testing %d lines with %d parsers.", scalar(@$lines), scalar(keys %parsers);
ok( scalar(keys %parsers)>0 && scalar(@$lines)>0,
sprintf "Testing %d lines with %d parsers.",
scalar(@$lines), scalar(keys %parsers) );
foreach my $key (sort keys %parsers) {
my $parser = $parsers{$key};
print "Testing parser $key version " . ($parser->version||'?') . "\n";
@ -54,15 +57,31 @@ LINE: foreach (@$lines) {
foreach my $key (sort keys %parsers) {
my $parser = $parsers{$key};
my ($status,$count,@fields);
ok($status = $parser->parse($_->{line}), "parse ($key)");
$status = $parser->parse($_->{line});
if ($status) {
ok($status, "parse ($key)");
@fields = $parser->fields;
ok(($count = scalar(@fields)) == 6, "Number of fields ($count of 6)");
my $j = 0;
foreach my $f (@fields) {
print "\t field " . ++$j . ": $f\n";
++$j;
if ($j==4) {
if ($key ne 'Text::CSV::Unicode (binary)') {
warning_like {
print "\t field " . $j . ": $f\n"
} [ qr/Wide character in print/ ], 'Expected wide print';
} else {
print "\t field " . $j . ": $f\n"
}
}
else {
print "\t field " . $j . ": $f\n";
}
}
}
else {
ok(! $status, "parse ($key) fails as expected");
}
}
}
diag "done.\n";
done_testing();