Skip to content

Commit 8014c0e

Browse files
committed
[CSV-149]/[CSV-195] fix line number is not proper at EOF
1 parent 57c7734 commit 8014c0e

3 files changed

Lines changed: 8 additions & 9 deletions

File tree

src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ final class ExtendedBufferedReader extends BufferedReader {
5656
@Override
5757
public int read() throws IOException {
5858
final int current = super.read();
59-
if (current == CR || current == LF && lastChar != CR) {
59+
if ((current == CR || current == LF && lastChar != CR)
60+
|| (current == END_OF_STREAM && lastChar != CR && lastChar != LF && lastChar != END_OF_STREAM)) {
6061
eolCounter++;
6162
}
6263
lastChar = current;

src/test/java/org/apache/commons/csv/CSVParserTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -641,11 +641,11 @@ public void testGetRecordWithMultiLineValues() throws Exception {
641641
assertEquals(2, record.getRecordNumber());
642642
assertEquals(2, parser.getRecordNumber());
643643
assertNotNull(record = parser.nextRecord());
644-
assertEquals(8, parser.getCurrentLineNumber());
644+
assertEquals(9, parser.getCurrentLineNumber());
645645
assertEquals(3, record.getRecordNumber());
646646
assertEquals(3, parser.getRecordNumber());
647647
assertNull(record = parser.nextRecord());
648-
assertEquals(8, parser.getCurrentLineNumber());
648+
assertEquals(9, parser.getCurrentLineNumber());
649649
assertEquals(3, parser.getRecordNumber());
650650
}
651651
}
@@ -1195,11 +1195,11 @@ private void validateLineNumbers(final String lineSeparator) throws IOException
11951195
assertNotNull(parser.nextRecord());
11961196
assertEquals(2, parser.getCurrentLineNumber());
11971197
assertNotNull(parser.nextRecord());
1198-
// Still 2 because the last line is does not have EOL chars
1199-
assertEquals(2, parser.getCurrentLineNumber());
1198+
// Read EOF without EOL should 3
1199+
assertEquals(3, parser.getCurrentLineNumber());
12001200
assertNull(parser.nextRecord());
1201-
// Still 2 because the last line is does not have EOL chars
1202-
assertEquals(2, parser.getCurrentLineNumber());
1201+
// Read EOF without EOL should 3
1202+
assertEquals(3, parser.getCurrentLineNumber());
12031203
}
12041204
}
12051205

src/test/java/org/apache/commons/csv/issues/JiraCsv149Test.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@
2424
import org.apache.commons.csv.CSVFormat;
2525
import org.apache.commons.csv.CSVParser;
2626
import org.apache.commons.csv.CSVRecord;
27-
import org.junit.jupiter.api.Disabled;
2827
import org.junit.jupiter.api.Test;
2928

30-
@Disabled
3129
public class JiraCsv149Test {
3230

3331
@Test

0 commit comments

Comments
 (0)