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 266b88701fe6e2cddaaab863fe2bde41c335f51e Author: Michael Osipov <micha...@apache.org> AuthorDate: Fri May 19 19:18:01 2023 +0200 Use simple String#valueOf() to convert a float to a string --- .../surefire/report/StatelessXmlReporter.java | 52 ++++++++++++---------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java index 7a9a019d9..d7da09196 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java @@ -48,41 +48,41 @@ import static org.apache.maven.plugin.surefire.report.ReportEntryType.SKIPPED; import static org.apache.maven.plugin.surefire.report.ReportEntryType.SUCCESS; import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank; -@SuppressWarnings({"javadoc", "checkstyle:javadoctype"}) // CHECKSTYLE_OFF: LineLength -/* +/** * XML format reporter writing to <code>TEST-<i>reportName</i>[-<i>suffix</i>].xml</code> file like written and read * by Ant's <a href="http://ant.apache.org/manual/Tasks/junit.html"><code><junit></code></a> and * <a href="http://ant.apache.org/manual/Tasks/junitreport.html"><code><junitreport></code></a> tasks, * then supported by many tools like CI servers. * <br> - * <pre><?xml version="1.0" encoding="UTF-8"?> - * <testsuite name="<i>suite name</i>" [group="<i>group</i>"] tests="<i>0</i>" failures="<i>0</i>" errors="<i>0</i>" skipped="<i>0</i>" time="<i>0,###.###</i>"> - * <properties> - * <property name="<i>name</i>" value="<i>value</i>"/> + * <pre><?xml version="1.0" encoding="UTF-8"?> + * <testsuite name="<i>suite name</i>" [group="<i>group</i>"] tests="<i>0</i>" failures="<i>0</i>" errors="<i>0</i>" skipped="<i>0</i>" time="<i>{float}</i>"> + * <properties> + * <property name="<i>name</i>" value="<i>value</i>"/> * [...] - * </properties> - * <testcase time="<i>0,###.###</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"/> - * <testcase time="<i>0,###.###</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"> - * <<b>error</b> message="<i>message</i>" type="<i>exception class name</i>"><i>stacktrace</i></error> - * <system-out><i>system out content (present only if not empty)</i></system-out> - * <system-err><i>system err content (present only if not empty)</i></system-err> - * </testcase> - * <testcase time="<i>0,###.###</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"> - * <<b>failure</b> message="<i>message</i>" type="<i>exception class name</i>"><i>stacktrace</i></failure> - * <system-out><i>system out content (present only if not empty)</i></system-out> - * <system-err><i>system err content (present only if not empty)</i></system-err> - * </testcase> - * <testcase time="<i>0,###.###</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"> - * <<b>skipped</b>/> + * </properties> + * <testcase time="<i>{float}</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"/> + * <testcase time="<i>{float}</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"> + * <<b>error</b> message="<i>message</i>" type="<i>exception class name</i>"><i>stacktrace</i></error> + * <system-out><i>system out content (present only if not empty)</i></system-out> + * <system-err><i>system err content (present only if not empty)</i></system-err> * </testcase> + * <testcase time="<i>{float}</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"> + * <<b>failure</b> message="<i>message</i>" type="<i>exception class name</i>"><i>stacktrace</i></failure> + * <system-out><i>system out content (present only if not empty)</i></system-out> + * <system-err><i>system err content (present only if not empty)</i></system-err> + * </testcase> + * <testcase time="<i>{float}</i>" name="<i>test name</i> [classname="<i>class name</i>"] [group="<i>group</i>"]"> + * <<b>skipped</b>/> + * </testcase> * [...]</pre> * * @author Kristian Rosenvold - * @see <a href="http://wiki.apache.org/ant/Proposals/EnhancedTestReports">Ant's format enhancement proposal</a> + * @see <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115528872">Ant's format enhancement proposal</a> * (not yet implemented by Ant 1.8.2) */ -// todo this is no more stateless due to existence of testClassMethodRunHistoryMap since of 2.19. +@SuppressWarnings({"javadoc", "checkstyle:javadoctype"}) +// TODO this is no more stateless due to existence of testClassMethodRunHistoryMap since of 2.19. public class StatelessXmlReporter implements StatelessReportEventListener<WrappedReportEntry, TestSetStats> { private static final String XML_INDENT = " "; @@ -387,7 +387,9 @@ public class StatelessXmlReporter implements StatelessReportEventListener<Wrappe ppw.addAttribute("classname", extraEscapeAttribute(className)); } - ppw.addAttribute("time", report.elapsedTimeAsString()); + if (report.getElapsed() != null) { + ppw.addAttribute("time", String.valueOf(report.getElapsed() / 1000.0f)); + } } private void createTestSuiteElement(XMLWriter ppw, WrappedReportEntry report, TestSetStats testSetStats) @@ -407,7 +409,9 @@ public class StatelessXmlReporter implements StatelessReportEventListener<Wrappe ppw.addAttribute("group", report.getGroup()); } - ppw.addAttribute("time", report.elapsedTimeAsString()); + if (report.getElapsed() != null) { + ppw.addAttribute("time", String.valueOf(report.getElapsed() / 1000.0f)); + } ppw.addAttribute("tests", String.valueOf(testSetStats.getCompletedCount()));