This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-cli.git
The following commit(s) were added to refs/heads/master by this push: new 3427839 [CLI-317] NullPointerException thrown by CommandLineParser.parse() 3427839 is described below commit 34278395b6115752774c3d16a00292591da2dde3 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sat Aug 19 09:26:54 2023 -0400 [CLI-317] NullPointerException thrown by CommandLineParser.parse() --- src/main/java/org/apache/commons/cli/Option.java | 1 + src/test/java/org/apache/commons/cli/AbstractParserTestCase.java | 5 +++-- src/test/java/org/apache/commons/cli/OptionTest.java | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/commons/cli/Option.java b/src/main/java/org/apache/commons/cli/Option.java index e8853e2..fef6f03 100644 --- a/src/main/java/org/apache/commons/cli/Option.java +++ b/src/main/java/org/apache/commons/cli/Option.java @@ -201,6 +201,7 @@ public class Option implements Cloneable, Serializable { * @return this builder, to allow method chaining */ public Builder optionalArg(final boolean optionalArg) { + this.argCount = optionalArg ? 1 : UNINITIALIZED; this.optionalArg = optionalArg; return this; } diff --git a/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java b/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java index 907e1f0..534939a 100644 --- a/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java +++ b/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java @@ -75,12 +75,13 @@ public abstract class AbstractParserTestCase { assertEquals("bar", cl.getOptionValue("foo")); } + @Test public void testAmbiguousLongWithoutEqualSingleDash2() throws Exception { final String[] args = {"-b", "-foobar"}; final Options options = new Options(); - options.addOption(Option.builder().option("f").longOpt("foo").optionalArg(true).build()); - options.addOption(Option.builder().option("b").longOpt("bar").optionalArg(false).build()); + options.addOption(Option.builder().longOpt("foo").option("f").optionalArg(true).build()); + options.addOption(Option.builder().longOpt("bar").option("b").optionalArg(false).build()); final CommandLine cl = parser.parse(options, args); diff --git a/src/test/java/org/apache/commons/cli/OptionTest.java b/src/test/java/org/apache/commons/cli/OptionTest.java index 0ee4005..6650357 100644 --- a/src/test/java/org/apache/commons/cli/OptionTest.java +++ b/src/test/java/org/apache/commons/cli/OptionTest.java @@ -131,7 +131,7 @@ public class OptionTest { String.class); checkOption(Option.builder("a").desc("desc").optionalArg(false).build(), "a", "desc", null, Option.UNINITIALIZED, null, false, false, defaultSeparator, String.class); - checkOption(Option.builder("a").desc("desc").optionalArg(true).build(), "a", "desc", null, Option.UNINITIALIZED, null, false, true, defaultSeparator, + checkOption(Option.builder("a").desc("desc").optionalArg(true).build(), "a", "desc", null, 1, null, false, true, defaultSeparator, String.class); checkOption(Option.builder("a").desc("desc").valueSeparator(':').build(), "a", "desc", null, Option.UNINITIALIZED, null, false, false, ':', String.class);