From: Moritz Bunkus Date: Tue, 16 Aug 2016 15:18:48 +0000 (+0200) Subject: CSV-Helfer: Error-Felder versionsunabhängig setzen X-Git-Tag: release-3.5.4~2134 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=3c90e4c5f6a94d7486a0617d1bd77c417da12677;p=kivitendo-erp.git CSV-Helfer: Error-Felder versionsunabhängig setzen 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. --- 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; }