You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2023/05/22 16:07:11 UTC

[maven-surefire] 01/01: Simplify XML time value parsing

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

michaelo pushed a commit to branch backport
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit b671b1ccee4e6caa9cfdbf4e8ee614bc4c543b4b
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Mon May 22 16:25:34 2023 +0200

    Simplify XML time value parsing
---
 .../surefire/report/TestSuiteXmlParser.java        | 35 ++++++++--------------
 1 file changed, 12 insertions(+), 23 deletions(-)

diff --git a/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java
index 83ccc0619..66817014e 100644
--- a/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java
+++ b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java
@@ -26,8 +26,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.text.NumberFormat;
-import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -40,15 +38,12 @@ import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static java.util.Locale.ENGLISH;
 import static org.apache.maven.shared.utils.StringUtils.isBlank;
 
 /**
  *
  */
 public final class TestSuiteXmlParser extends DefaultHandler {
-    private final NumberFormat numberFormat = NumberFormat.getInstance(ENGLISH);
-
     private final ConsoleLogger consoleLogger;
 
     private ReportTestSuite defaultSuite;
@@ -111,13 +106,11 @@ public final class TestSuiteXmlParser extends DefaultHandler {
                     case "testsuite":
                         defaultSuite = new ReportTestSuite();
                         currentSuite = defaultSuite;
-
-                        try {
-                            Number time = numberFormat.parse(attributes.getValue("time"));
-
-                            defaultSuite.setTimeElapsed(time.floatValue());
-                        } catch (NullPointerException e) {
-                            consoleLogger.error("WARNING: no time attribute found on testsuite element");
+                        String timeStr = attributes.getValue("time");
+                        if (timeStr != null) {
+                            defaultSuite.setTimeElapsed(Float.parseFloat(timeStr));
+                        } else {
+                            consoleLogger.warning("No time attribute found on testsuite element");
                         }
 
                         final String name = attributes.getValue("name");
@@ -131,8 +124,6 @@ public final class TestSuiteXmlParser extends DefaultHandler {
                         classesToSuitesIndex.put(defaultSuite.getFullClassName(), suites.size() - 1);
                         break;
                     case "testcase":
-                        currentElement = new StringBuilder();
-
                         testCase = new ReportTestCase().setName(attributes.getValue("name"));
 
                         String fullClassName = attributes.getValue("classname");
@@ -149,13 +140,12 @@ public final class TestSuiteXmlParser extends DefaultHandler {
                             }
                         }
 
-                        String timeAsString = attributes.getValue("time");
-                        Number time = isBlank(timeAsString) ? 0 : numberFormat.parse(timeAsString);
+                        timeStr = attributes.getValue("time");
 
                         testCase.setFullClassName(currentSuite.getFullClassName())
                                 .setClassName(currentSuite.getName())
                                 .setFullName(currentSuite.getFullClassName() + "." + testCase.getName())
-                                .setTime(time.floatValue());
+                                .setTime(timeStr != null ? Float.parseFloat(timeStr) : 0.0f);
 
                         if (currentSuite != defaultSuite) {
                             currentSuite.setTimeElapsed(testCase.getTime() + currentSuite.getTimeElapsed());
@@ -184,8 +174,8 @@ public final class TestSuiteXmlParser extends DefaultHandler {
                     default:
                         break;
                 }
-            } catch (ParseException e) {
-                throw new SAXException(e.getMessage(), e);
+            } catch (NumberFormatException e) {
+                throw new SAXException("Failed to parse time value", e);
             }
         }
     }
@@ -206,10 +196,9 @@ public final class TestSuiteXmlParser extends DefaultHandler {
                 break;
             case "time":
                 try {
-                    defaultSuite.setTimeElapsed(
-                            numberFormat.parse(currentElement.toString()).floatValue());
-                } catch (ParseException e) {
-                    throw new SAXException(e.getMessage(), e);
+                    defaultSuite.setTimeElapsed(Float.parseFloat(currentElement.toString()));
+                } catch (NumberFormatException e) {
+                    throw new SAXException("Failed to parse time value", e);
                 }
                 break;
             default: