Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3c90e4c5

Von Moritz Bunkus vor etwa 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
158 158
    foreach my $p_num (0..$n_header - 1) {
159 159
      my $h = $self->_csv->getline($self->_io);
160 160

  
161
      my ($code, $string, $position, $record, $field) = $self->_csv->error_diag;
162

  
161 163
      $self->_push_error([
162 164
        $self->_csv->error_input,
163
        $self->_csv->error_diag,
164
        0,
165
        $code, $string, $position, $record // 0,
165 166
      ]) unless $h;
166 167

  
167 168
      if ($self->is_multiplexed) {
......
259 260
      push @data, \%hr;
260 261
    } else {
261 262
      last if $self->_csv->eof;
263

  
262 264
      # Text::CSV_XS 0.89 added record number to error_diag
263
      if (qv(Text::CSV_XS->VERSION) >= qv('0.89')) {
264
        push @errors, [
265
          $self->_csv->error_input,
266
          $self->_csv->error_diag,
267
        ];
268
      } else {
269
        push @errors, [
270
          $self->_csv->error_input,
271
          $self->_csv->error_diag,
272
          $self->_io->input_line_number,
273
        ];
274
      }
265
      my ($code, $string, $position, $record, $field) = $self->_csv->error_diag;
266

  
267
      push @errors, [
268
        $self->_csv->error_input,
269
        $code, $string, $position,
270
        $record // $self->_io->input_line_number,
271
      ];
275 272
    }
276 273
    last if $self->_csv->eof;
277 274
  }

Auch abrufbar als: Unified diff