Skip to content

Commit ad11cd1

Browse files
authored
[CSV-149]/[CSV-195] fix line number is not proper at EOF (apache#60)
1 parent d684508 commit ad11cd1

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
@@ -125,7 +125,8 @@ int lookAhead() throws IOException {
125125
@Override
126126
public int read() throws IOException {
127127
final int current = super.read();
128-
if (current == CR || current == LF && lastChar != CR) {
128+
if ((current == CR || current == LF && lastChar != CR)
129+
|| (current == END_OF_STREAM && lastChar != CR && lastChar != LF && lastChar != END_OF_STREAM)) {
129130
eolCounter++;
130131
}
131132
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
@@ -644,11 +644,11 @@ public void testGetRecordWithMultiLineValues() throws Exception {
644644
assertEquals(2, record.getRecordNumber());
645645
assertEquals(2, parser.getRecordNumber());
646646
assertNotNull(record = parser.nextRecord());
647-
assertEquals(8, parser.getCurrentLineNumber());
647+
assertEquals(9, parser.getCurrentLineNumber());
648648
assertEquals(3, record.getRecordNumber());
649649
assertEquals(3, parser.getRecordNumber());
650650
assertNull(record = parser.nextRecord());
651-
assertEquals(8, parser.getCurrentLineNumber());
651+
assertEquals(9, parser.getCurrentLineNumber());
652652
assertEquals(3, parser.getRecordNumber());
653653
}
654654
}
@@ -1192,11 +1192,11 @@ private void validateLineNumbers(final String lineSeparator) throws IOException
11921192
assertNotNull(parser.nextRecord());
11931193
assertEquals(2, parser.getCurrentLineNumber());
11941194
assertNotNull(parser.nextRecord());
1195-
// Still 2 because the last line is does not have EOL chars
1196-
assertEquals(2, parser.getCurrentLineNumber());
1195+
// Read EOF without EOL should 3
1196+
assertEquals(3, parser.getCurrentLineNumber());
11971197
assertNull(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
}
12011201
}
12021202

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
private static final String CR_LF = "\r\n";

0 commit comments

Comments
 (0)