This is an automated email from the ASF dual-hosted git repository.

khmarbaise pushed a commit to branch MNG-7940
in repository https://gitbox.apache.org/repos/asf/maven.git

commit b08b62f8de059d155dc05cea308dec0a0b2946b6
Author: Karl Heinz Marbaise <khmarba...@apache.org>
AuthorDate: Sat Nov 18 14:15:19 2023 +0100

    [MNG-7940] - Maven embedder CLI output contains nulls.
---
 .../maven/cli/CLIManagerDocumentationTest.java     | 52 ++++++++++++++++------
 1 file changed, 38 insertions(+), 14 deletions(-)

diff --git 
a/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java
 
b/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java
index 2397f1fa0a..bae804f080 100644
--- 
a/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java
+++ 
b/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java
@@ -22,7 +22,6 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
@@ -30,6 +29,8 @@ import org.apache.commons.cli.Option;
 import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.Test;
 
+import static java.util.Objects.nonNull;
+
 /**
  * Pseudo test to generate documentation fragment about supported CLI options. 
TODO such documentation generation code
  * should not be necessary as unit test but should be run during site 
generation (Velocity? Doxia macro?)
@@ -48,27 +49,45 @@ class CLIManagerDocumentationTest {
     private static class CLIManagerExtension extends CLIManager {
         public Collection<Option> getOptions() {
             List<Option> optList = new ArrayList<>(options.getOptions());
-            Collections.sort(optList, new OptionComparator());
+            optList.sort(new OptionComparator());
             return optList;
         }
     }
 
     String getOptionsAsHtml() {
         StringBuilder sb = new StringBuilder(512);
-        boolean a = true;
+        boolean odd = true;
         sb.append(
                 "<table border='1' class='zebra-striped'><tr 
class='a'><th><b>Options</b></th><th><b>Description</b></th></tr>");
         for (Option option : new CLIManagerExtension().getOptions()) {
-            a = !a;
-            sb.append("<tr class='").append(a ? 'a' : 
'b').append("'><td><code>-<a name='");
-            sb.append(option.getOpt());
-            sb.append("'>");
-            sb.append(option.getOpt());
-            sb.append("</a>,--<a name='");
-            sb.append(option.getLongOpt());
+            odd = !odd;
+            sb.append("<tr class='");
+            sb.append(odd ? 'a' : 'b');
             sb.append("'>");
-            sb.append(option.getLongOpt());
-            sb.append("</a>");
+
+            sb.append("<td>");
+
+            sb.append("<code>");
+
+            if (nonNull(option.getOpt())) {
+                sb.append("-<a name='");
+                sb.append(option.getOpt());
+                sb.append("'>");
+                sb.append(option.getOpt());
+                sb.append("</a>");
+            }
+
+            if (nonNull(option.getLongOpt())) {
+                if (nonNull(option.getOpt())) {
+                    sb.append(", ");
+                }
+                sb.append("--<a name='");
+                sb.append(option.getLongOpt());
+                sb.append("'>");
+                sb.append(option.getLongOpt());
+                sb.append("</a>");
+            }
+
             if (option.hasArg()) {
                 if (option.hasArgName()) {
                     sb.append(" 
&lt;").append(option.getArgName()).append("&gt;");
@@ -76,9 +95,14 @@ class CLIManagerDocumentationTest {
                     sb.append(' ');
                 }
             }
-            sb.append("</code></td><td>");
+            sb.append("</code>");
+
+            sb.append("</td>");
+            sb.append("<td>");
             sb.append(option.getDescription());
-            sb.append("</td></tr>");
+            sb.append("</td>");
+
+            sb.append("</tr>");
             sb.append(LS);
         }
         sb.append("</table>");

Reply via email to