Bugfix: Kein newline am Ende der Datei verschluckte die letzte Zeile.
authorSven Schöling <s.schoeling@linet-services.de>
Mon, 7 Mar 2011 11:10:50 +0000 (12:10 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 16 Jun 2011 06:44:09 +0000 (08:44 +0200)
SL/Helper/Csv.pm
t/helper/csv.t

index d4a0c88..e2032ea 100644 (file)
@@ -120,18 +120,19 @@ sub _parse_data {
 
   while (1) {
     my $row = $self->_csv->getline($self->_io);
-    last if $self->_csv->eof;
     if ($row) {
       my %hr;
       @hr{@{ $self->header }} = @$row;
       push @data, \%hr;
     } else {
+      last if $self->_csv->eof;
       push @errors, [
         $self->_csv->error_input,
         $self->_csv->error_diag,
         $self->_io->input_line_number,
       ];
     }
+    last if $self->_csv->eof;
   }
 
   $self->_data(\@data);
index e54dcb6..d4a1571 100644 (file)
@@ -1,4 +1,4 @@
-use Test::More tests => 36;
+use Test::More tests => 37;
 use SL::Dispatcher;
 use Data::Dumper;
 use utf8;
@@ -264,5 +264,14 @@ $csv->parse;
 
 is_deeply( ($csv->errors)[0], [ 'description', undef, 'header field \'description\' is not recognized', undef, 0 ], 'strict_profile without ignore_columns throws error');
 
+#####
+
+$csv = SL::Helper::Csv->new(
+  file   => \"Kaffee",
+  header => [ 'description' ],
+  class  => 'SL::DB::Part',
+);
+$csv->parse;
+is_deeply $csv->get_data, [ { description => 'Kaffee' } ], 'eol bug at the end of files';
 
 # vim: ft=perl