summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric Beust <cedric@beust.com>2017-04-04 21:10:51 -0700
committerGitHub <noreply@github.com>2017-04-04 21:10:51 -0700
commitfadaa32e3113690dc0cdd0fe66cffeddaced9daf (patch)
tree899d6eb08657c4806f53d19f7e7bda459a751ddc
parent281eb8c37d5ce2688fe57c3e7dcf3eaa09fb68d8 (diff)
parent5935f49affd2fb2f4fb2a10d2d0241b8ba2f96ad (diff)
downloadjcommander-fadaa32e3113690dc0cdd0fe66cffeddaced9daf.tar.gz
Merge pull request #348 from 7acd22f0bcd3ac948246/master
Fix for issue: ParameterException is not thrown when a parameter with variable arity has no value #343
-rw-r--r--src/main/java/com/beust/jcommander/JCommander.java3
-rw-r--r--src/test/java/com/beust/jcommander/JCommanderTest.java8
2 files changed, 10 insertions, 1 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java
index 99846f7..8fd455d 100644
--- a/src/main/java/com/beust/jcommander/JCommander.java
+++ b/src/main/java/com/beust/jcommander/JCommander.java
@@ -845,6 +845,9 @@ public class JCommander {
|| boolean.class.isAssignableFrom(fieldType))) {
pd.addValue("true");
requiredFields.remove(pd.getParameterized());
+ } else if (arity == 0) {
+ throw new ParameterException("Expected a value after parameter " + arg);
+
} else if (index < args.length - 1) {
int offset = "--".equals(args[index + 1]) ? 1 : 0;
diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java
index 8b7dbb7..a93966e 100644
--- a/src/test/java/com/beust/jcommander/JCommanderTest.java
+++ b/src/test/java/com/beust/jcommander/JCommanderTest.java
@@ -688,7 +688,7 @@ public class JCommanderTest {
@DataProvider
public Object[][] variable() {
return new Object[][]{
- new Object[]{0, V.subList(0, 0), V},
+ //new Object[]{0, V.subList(0, 0), V},
new Object[]{1, V.subList(0, 1), V.subList(1, 4)},
new Object[]{2, V.subList(0, 2), V.subList(2, 4)},
new Object[]{3, V.subList(0, 3), V.subList(3, 4)},
@@ -704,6 +704,12 @@ public class JCommanderTest {
Assert.assertEquals(main, va.main);
}
+ @Test(expectedExceptions = ParameterException.class)
+ public void variableArityZeroNonBoolean() {
+ VariableArity va = new VariableArity(0);
+ new JCommander(va).parse("-variable", "a", "b", "c", "d");
+ }
+
public void enumArgs() {
ArgsEnum args = new ArgsEnum();
String[] argv = {"-choice", "ONE", "-choices", "ONE", "Two"};