@Test public void testOptionClearCustomSetterBeforeParse() { CommandSpec cmd = CommandSpec.create(); final List<Object> values = new ArrayList<Object>(); ISetter setter = new ISetter() { public <T> T set(T value) { values.add(value); return null; } }; cmd.addOption(OptionSpec.builder("-x").type(String.class).setter(setter).build()); CommandLine cl = new CommandLine(cmd); assertTrue(values.isEmpty()); cl.parseArgs("-x", "1"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("1", values.get(1)); values.clear(); cl.parseArgs("-x", "2"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("2", values.get(1)); }
@Test public void testOptionClearCustomSetterBeforeParse() { CommandSpec cmd = CommandSpec.create(); final List<Object> values = new ArrayList<Object>(); ISetter setter = new ISetter() { public <T> T set(T value) { values.add(value); return null; } }; cmd.addOption(OptionSpec.builder("-x").type(String.class).setter(setter).build()); CommandLine cl = new CommandLine(cmd); assertTrue(values.isEmpty()); cl.parseArgs("-x", "1"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("1", values.get(1)); values.clear(); cl.parseArgs("-x", "2"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("2", values.get(1)); }
@Test public void testIssue439InjectedSpecInMixinHasNullCommandLineProgrammatic() { final CommandSpec mixinSpec = CommandSpec.create(); ISetter trexSetter = new ISetter() { public <T> T set(T value) { throw new ParameterException(mixinSpec.commandLine(), "TREX error"); } }; mixinSpec.addOption(OptionSpec.builder("--trex"). type(String.class).setter(trexSetter).build()); final CommandSpec commandSpec = CommandSpec.create(); commandSpec.addMixin("mixin", mixinSpec); ISetter raptorSetter = new ISetter() { public <T> T set(T value) { throw new ParameterException(commandSpec.commandLine(), "RAPTOR error"); } }; commandSpec.addOption(OptionSpec.builder("--raptor"). type(String.class).setter(raptorSetter).build()); CommandLine cmd = new CommandLine(commandSpec); assertExceptionThrownFromSetter(cmd); }
@Test public void testIssue439InjectedSpecInMixinHasNullCommandLineProgrammatic() { final CommandSpec mixinSpec = CommandSpec.create(); ISetter trexSetter = new ISetter() { public <T> T set(T value) { throw new ParameterException(mixinSpec.commandLine(), "TREX error"); } }; mixinSpec.addOption(OptionSpec.builder("--trex"). type(String.class).setter(trexSetter).build()); final CommandSpec commandSpec = CommandSpec.create(); commandSpec.addMixin("mixin", mixinSpec); ISetter raptorSetter = new ISetter() { public <T> T set(T value) { throw new ParameterException(commandSpec.commandLine(), "RAPTOR error"); } }; commandSpec.addOption(OptionSpec.builder("--raptor"). type(String.class).setter(raptorSetter).build()); CommandLine cmd = new CommandLine(commandSpec); assertExceptionThrownFromSetter(cmd); }