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

commit 50b149a00b89d846897bb30645534fb599584e6c
Author: Gary D. Gregory <[email protected]>
AuthorDate: Tue Jul 29 11:17:00 2025 -0400

    Simplify and test MissingOptionException message construction
---
 .../org/apache/commons/cli/MissingOptionException.java  | 17 ++++-------------
 .../apache/commons/cli/MissingOptionExceptionTest.java  | 10 ++++++++++
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/main/java/org/apache/commons/cli/MissingOptionException.java 
b/src/main/java/org/apache/commons/cli/MissingOptionException.java
index 9c29a582..7ab19656 100644
--- a/src/main/java/org/apache/commons/cli/MissingOptionException.java
+++ b/src/main/java/org/apache/commons/cli/MissingOptionException.java
@@ -17,13 +17,13 @@
 
 package org.apache.commons.cli;
 
-import java.util.Iterator;
 import java.util.List;
 
 /**
  * Thrown when a required option has not been provided.
  */
 public class MissingOptionException extends ParseException {
+
     /** This exception {@code serialVersionUID}. */
     private static final long serialVersionUID = 8161889051578563249L;
 
@@ -34,18 +34,9 @@ public class MissingOptionException extends ParseException {
      */
     private static String createMessage(final List<?> missingOptions) {
         final StringBuilder buf = new StringBuilder("Missing required option");
-        buf.append(missingOptions.size() == 1 ? "" : "s");
-        buf.append(": ");
-
-        final Iterator<?> it = missingOptions.iterator();
-        while (it.hasNext()) {
-            buf.append(it.next());
-            if (it.hasNext()) {
-                buf.append(", ");
-            }
-        }
-
-        return buf.toString();
+        buf.append(missingOptions.size() == 1 ? "" : "s").append(": ");
+        final String string = missingOptions.toString();
+        return buf.append(string.substring(1, string.length() - 1)).toString();
     }
 
     /** The list of missing options and groups */
diff --git 
a/src/test/java/org/apache/commons/cli/MissingOptionExceptionTest.java 
b/src/test/java/org/apache/commons/cli/MissingOptionExceptionTest.java
index 107b7bd4..e0644c12 100644
--- a/src/test/java/org/apache/commons/cli/MissingOptionExceptionTest.java
+++ b/src/test/java/org/apache/commons/cli/MissingOptionExceptionTest.java
@@ -30,6 +30,16 @@ import org.junit.jupiter.api.Test;
  */
 public class MissingOptionExceptionTest {
 
+    @Test
+    void testGetMessage() {
+        final List<String> originalList = new ArrayList<>();
+        originalList.add("optA");
+        originalList.add("optB");
+        final MissingOptionException exception = new 
MissingOptionException(originalList);
+        assertEquals("Missing required options: optA, optB", 
exception.getMessage());
+        assertEquals("Missing required options: ", new 
MissingOptionException(new ArrayList<>()).getMessage());
+    }
+
     @Test
     void testGetMissingOptions() {
         final List<String> originalList = new ArrayList<>();

Reply via email to