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);

Reply via email to