[ https://issues.apache.org/jira/browse/CSV-247?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16945858#comment-16945858 ]
Alex Herbert commented on CSV-247: ---------------------------------- I still think there is an inconsistency. My original test case in the ticket header expects an exception when there is a single missing header and the parser is configured to not allow missing column names. This is how the code works. This runs fine against current master: {code:java} @Test public void testHeadersMissing() throws Exception { // The default does not allow missing column names but allows duplicate headers Assertions.assertFalse(CSVFormat.DEFAULT.getAllowMissingColumnNames(), "By default we should not allow missing column names"); Assertions.assertTrue(CSVFormat.DEFAULT.getAllowDuplicateHeaderNames(), "By default we should allow duplicate column names"); // 1 missing column header is OK Assertions.assertDoesNotThrow(() -> { final Reader in = new StringReader("a,,c,d,e\n1,2,3,4,5\nv,w,x,y,z"); CSVFormat.DEFAULT.withHeader().parse(in).iterator(); }, "1 missing column header is OK"); // 2 missing column headers is not OK Assertions.assertThrows(IllegalArgumentException.class, () -> { final Reader in = new StringReader("a,,c,d,\n1,2,3,4,5\nv,w,x,y,z"); CSVFormat.DEFAULT.withHeader().parse(in).iterator(); }, "2+ missing column headers is not allowed!"); } {code} So 1 missing header is fine but not 2 or more. This is the bug. My PR to fix this is old. Do you want a rebased version with tests showing what I expect? > A single empty header is allowed when not allowing empty column headers. > ------------------------------------------------------------------------ > > Key: CSV-247 > URL: https://issues.apache.org/jira/browse/CSV-247 > Project: Commons CSV > Issue Type: Bug > Affects Versions: 1.7 > Reporter: Alex Herbert > Priority: Minor > Time Spent: 40m > Remaining Estimate: 0h > > If the settings are not allowing empty columns headers you can currently use > a single empty header. This is because column headers are only checked for > empty when they are duplicates. So it is the second empty header (the first > duplicate) that raises an error. This test should pass but does not: > {code:java} > @Test(expected = IllegalArgumentException.class) > public void testHeadersMissingOneColumnException() throws Exception { > final Reader in = new StringReader("a,,c,d\n1,2,3,4\nx,y,z,zz"); > CSVFormat.DEFAULT.withHeader().parse(in).iterator(); > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)