Skip to content

Commit 3427839

Browse files
committed
[CLI-317] NullPointerException thrown by CommandLineParser.parse()
1 parent 3f3a2e5 commit 3427839

3 files changed

Lines changed: 5 additions & 3 deletions

File tree

src/main/java/org/apache/commons/cli/Option.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ public Builder option(final String option) throws IllegalArgumentException {
201201
* @return this builder, to allow method chaining
202202
*/
203203
public Builder optionalArg(final boolean optionalArg) {
204+
this.argCount = optionalArg ? 1 : UNINITIALIZED;
204205
this.optionalArg = optionalArg;
205206
return this;
206207
}

src/test/java/org/apache/commons/cli/AbstractParserTestCase.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,13 @@ public void testAmbiguousLongWithoutEqualSingleDash() throws Exception {
7575
assertEquals("bar", cl.getOptionValue("foo"));
7676
}
7777

78+
@Test
7879
public void testAmbiguousLongWithoutEqualSingleDash2() throws Exception {
7980
final String[] args = {"-b", "-foobar"};
8081

8182
final Options options = new Options();
82-
options.addOption(Option.builder().option("f").longOpt("foo").optionalArg(true).build());
83-
options.addOption(Option.builder().option("b").longOpt("bar").optionalArg(false).build());
83+
options.addOption(Option.builder().longOpt("foo").option("f").optionalArg(true).build());
84+
options.addOption(Option.builder().longOpt("bar").option("b").optionalArg(false).build());
8485

8586
final CommandLine cl = parser.parse(options, args);
8687

src/test/java/org/apache/commons/cli/OptionTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public void testBuilderMethods() {
131131
String.class);
132132
checkOption(Option.builder("a").desc("desc").optionalArg(false).build(), "a", "desc", null, Option.UNINITIALIZED, null, false, false, defaultSeparator,
133133
String.class);
134-
checkOption(Option.builder("a").desc("desc").optionalArg(true).build(), "a", "desc", null, Option.UNINITIALIZED, null, false, true, defaultSeparator,
134+
checkOption(Option.builder("a").desc("desc").optionalArg(true).build(), "a", "desc", null, 1, null, false, true, defaultSeparator,
135135
String.class);
136136
checkOption(Option.builder("a").desc("desc").valueSeparator(':').build(), "a", "desc", null, Option.UNINITIALIZED, null, false, false, ':',
137137
String.class);

0 commit comments

Comments
 (0)