From 3c90e4c5f6a94d7486a0617d1bd77c417da12677 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 16 Aug 2016 17:18:48 +0200 Subject: [PATCH] =?utf8?q?CSV-Helfer:=20Error-Felder=20versionsunabh=C3=A4?= =?utf8?q?ngig=20setzen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Unterschiedliche Versionen von Text::CSV_XS geben beim Aufruf von »error_diag« unterschiedliche Felder zurück: neuere geben mehr zurück. Es gibt aber einen Testcase, der das Fehler-Array auf exakte Übereinstimmung prüft. Da sorgt also jegliches neu hinzugekommenes Feld dafür, dass der Test fehlschlägt. Also nur die Felder explizit an SL::Helper::Csv::Error übergeben, die uns wirklich interessieren, und nicht das von »error_diag« zurückgebebene Array 1:1 durchreichen. --- SL/Helper/Csv.pm | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/SL/Helper/Csv.pm b/SL/Helper/Csv.pm index c58575afe..2444225ca 100644 --- a/SL/Helper/Csv.pm +++ b/SL/Helper/Csv.pm @@ -158,10 +158,11 @@ sub _check_header { foreach my $p_num (0..$n_header - 1) { my $h = $self->_csv->getline($self->_io); + my ($code, $string, $position, $record, $field) = $self->_csv->error_diag; + $self->_push_error([ $self->_csv->error_input, - $self->_csv->error_diag, - 0, + $code, $string, $position, $record // 0, ]) unless $h; if ($self->is_multiplexed) { @@ -259,19 +260,15 @@ sub _parse_data { push @data, \%hr; } else { last if $self->_csv->eof; + # Text::CSV_XS 0.89 added record number to error_diag - if (qv(Text::CSV_XS->VERSION) >= qv('0.89')) { - push @errors, [ - $self->_csv->error_input, - $self->_csv->error_diag, - ]; - } else { - push @errors, [ - $self->_csv->error_input, - $self->_csv->error_diag, - $self->_io->input_line_number, - ]; - } + my ($code, $string, $position, $record, $field) = $self->_csv->error_diag; + + push @errors, [ + $self->_csv->error_input, + $code, $string, $position, + $record // $self->_io->input_line_number, + ]; } last if $self->_csv->eof; } -- 2.20.1