Browse Source

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>
17.11.x
Mark Tompsett 7 years ago
committed by Jonathan Druart
parent
commit
89d36585bb
  1. 43
      xt/author/Text_CSV_Various.t

43
xt/author/Text_CSV_Various.t

@ -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();

Loading…
Cancel
Save