commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Herbert (Jira)" <>
Subject [jira] [Commented] (CSV-247) A single empty header is allowed when not allowing empty column headers.
Date Mon, 07 Oct 2019 12:51:00 GMT


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:
public void testHeadersMissing() throws Exception {
    // The default does not allow missing column names but allows duplicate headers
        "By default we should not allow missing column names");
        "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");
    }, "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");
    }, "2+ missing column headers is not allowed!");
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:
>             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

View raw message