Skip to content

ArgGroup validation silently accepts missing subgroup with multiplicity=1 #655

@remkop

Description

@remkop

Test to reproduce the issue:

@Command(name = "test-composite")
static class TestComposite {

    @ArgGroup(exclusive = false, multiplicity = "0..*")
    List<OuterGroup> outerList;

    static class OuterGroup {
        @Option(names = "--add-group", required = true) boolean addGroup;

        @ArgGroup(exclusive = false, multiplicity = "1")
        Inner inner;

        static class Inner {
            @Option(names = "--option1", required = true) String option1;
            @Option(names = "--option2", required = true) String option2;
        }
    }
}

@Test
public void testCompositeValidation() {
    TestComposite app = new TestComposite();
    CommandLine cmd = new CommandLine(app);
    try {
        ParseResult parseResult = cmd.parseArgs("--add-group", "--option2=1", "--option1=1", "--add-group");
        fail("Expect exception");
    } catch (MissingParameterException ex) {
        assertEquals("Error: Missing required argument(s): [--add-group (--option1=<option1> --option2=<option2>)]...", ex.getMessage());
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions