Skip to content

Commit 70f00f9

Browse files
committed
Fix readLine() so can still detect start of line next time round
Also fix broken test: format was set to ignore empty lines, yet it checked for one git-svn-id: https://svn.apache.org/repos/asf/commons/proper/csv/trunk@1306649 13f79535-47bb-0310-9956-ffa450edef68
1 parent 7addc8f commit 70f00f9

2 files changed

Lines changed: 16 additions & 15 deletions

File tree

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,7 @@ public String readLine() throws IOException {
123123
String line = super.readLine();
124124

125125
if (line != null) {
126-
if (line.length() > 0) {
127-
lastChar = line.charAt(line.length() - 1);
128-
}
126+
lastChar = '\n'; // needed for detecting start of line
129127
lineCounter++;
130128
} else {
131129
lastChar = END_OF_STREAM;

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

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,30 +57,33 @@ public void testNextToken1() throws IOException {
5757
@Test
5858
public void testNextToken2() throws IOException {
5959
final String code =
60-
"1,2,3,\n"+
61-
"a,b x,c#no-comment\n"+
62-
"#foo\n"+
63-
"\n"+
64-
"d,e,#no-comment\n"+
65-
"# Final comment\n";
60+
"1,2,3,\n"+ // 1
61+
"a,b x,c#no-comment\n"+ // 2
62+
"#foo\n"+ // 3
63+
"\n"+ // 4
64+
"d,e,#no-comment\n"+ // 5
65+
"# penultimate comment\n"+ // 6
66+
"# Final comment\n"; // 7
6667
CSVFormat format = CSVFormat.DEFAULT.withCommentStart('#');
68+
assertTrue("Should ignore empty lines", format.isEmptyLinesIgnored());
6769

6870
Lexer parser = getLexer(code, format);
6971

7072

7173
assertTokenEquals(TOKEN, "1", parser.nextToken(new Token()));
7274
assertTokenEquals(TOKEN, "2", parser.nextToken(new Token()));
7375
assertTokenEquals(TOKEN, "3", parser.nextToken(new Token()));
74-
assertTokenEquals(EORECORD, "", parser.nextToken(new Token()));
76+
assertTokenEquals(EORECORD, "", parser.nextToken(new Token())); // 1
7577
assertTokenEquals(TOKEN, "a", parser.nextToken(new Token()));
7678
assertTokenEquals(TOKEN, "b x", parser.nextToken(new Token()));
77-
assertTokenEquals(EORECORD, "c#no-comment", parser.nextToken(new Token()));
78-
assertTokenEquals(COMMENT, "", parser.nextToken(new Token()));
79-
assertTokenEquals(EORECORD, "", parser.nextToken(new Token()));
79+
assertTokenEquals(EORECORD, "c#no-comment", parser.nextToken(new Token())); // 2
80+
assertTokenEquals(COMMENT, "", parser.nextToken(new Token())); // 3
81+
// 4 empty line, ignored // 4
8082
assertTokenEquals(TOKEN, "d", parser.nextToken(new Token()));
8183
assertTokenEquals(TOKEN, "e", parser.nextToken(new Token()));
82-
assertTokenEquals(EORECORD, "#no-comment", parser.nextToken(new Token()));
83-
assertTokenEquals(COMMENT, "", parser.nextToken(new Token()));
84+
assertTokenEquals(EORECORD, "#no-comment", parser.nextToken(new Token())); // 5
85+
assertTokenEquals(COMMENT, "", parser.nextToken(new Token())); // 6
86+
assertTokenEquals(COMMENT, "", parser.nextToken(new Token())); // 7
8487
assertTokenEquals(EOF, "", parser.nextToken(new Token()));
8588
assertTokenEquals(EOF, "", parser.nextToken(new Token()));
8689

0 commit comments

Comments
 (0)