Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3c90e4c5

Von Moritz Bunkus vor mehr als 8 Jahren hinzugefügt

  • ID 3c90e4c5f6a94d7486a0617d1bd77c417da12677
  • Vorgänger cf00195c
  • Nachfolger 8881a022

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.

Unterschiede anzeigen:

SL/Helper/Csv.pm
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) {
......
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;
}

Auch abrufbar als: Unified diff