Skip to content

Commit

Permalink
Merge pull request #267 from mbenson/varargs
Browse files Browse the repository at this point in the history
FORGE-743: NamedValueOptionParser should reject varargs options
  • Loading branch information
gastaldi committed Jan 10, 2013
2 parents 2c8a777 + e51d4dd commit e2d7d1d
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ public CommandParserContext parse(final CommandMetadata command, final Queue<Str
if (command.hasOption(currentToken))
{
OptionMetadata option = command.getNamedOption(currentToken);
tokens.remove();

if (!option.isBoolean())
if (!option.isBoolean() && !option.isVarargs())
{
tokens.remove();
String value = null;
if (!tokens.isEmpty())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,17 @@ public void testVarargsTakesUnusedParameters() throws Exception
assertTrue(plugin.getVarargsOptions().contains("--bar"));
assertTrue(plugin.getVarargsOptions().contains("-ext"));
}

@Test
public void testNamedVarargs() throws Exception
{
getShell().execute("motp namedVarargsOption --opt foo bar baz");
assertEquals(3, plugin.getVarargsOptions().size());
assertTrue(plugin.getVarargsOptions().contains("foo"));
assertTrue(plugin.getVarargsOptions().contains("bar"));
assertTrue(plugin.getVarargsOptions().contains("baz"));

getShell().execute("motp namedVarargsOption");
assertNull(plugin.getVarargsOptions());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ public void requiredOption(@Option final String... options)
varargsOptions = options;
}

@Command("namedVarargsOption")
public void namedVarargsOption(@Option(name = "opt") final String... options)
{
varargsOptions = options;
}

@Command("booleanOptionOmitted")
public void booleanOptionOmitted(@Option(required = false,
description = "Some boolean flag") final boolean option)
Expand Down Expand Up @@ -109,6 +115,6 @@ public String getDefaultCommandArg()

public List<String> getVarargsOptions()
{
return Arrays.asList(varargsOptions);
return varargsOptions == null ? null : Arrays.asList(varargsOptions);
}
}

0 comments on commit e2d7d1d

Please sign in to comment.