[ 
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)

Reply via email to