diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5StatelessTestsetInfoReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5StatelessTestsetInfoReporter.java index ef44a77553..77987e6900 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5StatelessTestsetInfoReporter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5StatelessTestsetInfoReporter.java @@ -56,7 +56,7 @@ public class JUnit5StatelessTestsetInfoReporter extends SurefireStatelessTestset /** * Phrased class name of test case in the log (see xxx) - * Tests run: ., Failures: ., Errors: ., Skipped: ., Time elapsed: . s, - in xxx. + * Tests run: ., Failures: ., Errors: ., Skipped: ., Time elapsed: . s, -- in xxx. * {@code false} by default. *
* This action takes effect only in JUnit5 provider together with a test class annotated DisplayName. diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ReporterUtils.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ReporterUtils.java deleted file mode 100644 index a673a18d05..0000000000 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/ReporterUtils.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.maven.plugin.surefire.report; - -import java.text.NumberFormat; -import java.util.Locale; - -/** - * Utility for reporter classes. - * - * @author Tibor Digana (tibor17) - * @since 2.19 - */ -final class ReporterUtils { - private static final int MS_PER_SEC = 1000; - - private ReporterUtils() { - throw new IllegalStateException("non instantiable constructor"); - } - - static String formatElapsedTime(double runTime) { - NumberFormat numberFormat = NumberFormat.getInstance(Locale.ENGLISH); - numberFormat.setGroupingUsed(true); - numberFormat.setMinimumFractionDigits(0); - numberFormat.setMaximumFractionDigits(3); - return numberFormat.format(runTime / MS_PER_SEC); - } -} diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java index 6e79000dc7..96b4fb451b 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetStats.java @@ -41,7 +41,7 @@ public class TestSetStats { private static final String ERRORS = "Errors: "; private static final String SKIPPED = "Skipped: "; private static final String FAILURE_MARKER = " <<< FAILURE!"; - private static final String IN_MARKER = " - in "; + private static final String IN_MARKER = " -- in "; private static final String COMMA = ", "; private final Queue reportEntries = new ConcurrentLinkedQueue<>(); diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java index b66a1cfea2..6069364157 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/WrappedReportEntry.java @@ -20,7 +20,9 @@ import javax.annotation.Nonnull; +import java.text.MessageFormat; import java.util.Collections; +import java.util.Locale; import java.util.Map; import org.apache.maven.surefire.api.report.ReportEntry; @@ -29,7 +31,6 @@ import org.apache.maven.surefire.api.report.TestSetReportEntry; import static java.util.Collections.unmodifiableMap; -import static org.apache.maven.plugin.surefire.report.ReporterUtils.formatElapsedTime; import static org.apache.maven.surefire.api.util.internal.StringUtils.NL; import static org.apache.maven.surefire.shared.utils.StringUtils.isBlank; @@ -37,6 +38,8 @@ * @author Kristian Rosenvold */ public class WrappedReportEntry implements TestSetReportEntry { + private static final float ONE_SECOND = 1000.0f; + private final ReportEntry original; private final ReportEntryType reportEntryType; @@ -49,6 +52,14 @@ public class WrappedReportEntry implements TestSetReportEntry { private final Map systemProperties; + /* + * Rationale: The idea is to always display four digits for visually consistent output + * Important: Keep in sync with maven-surefire-report-plugin/src/main/resources/surefire-report.properties + */ + private final MessageFormat elapsedTimeFormat = new MessageFormat( + "{0,choice,0#0|0.0<{0,number,0.000}|10#{0,number,0.00}|100#{0,number,0.0}|1000#{0,number,0}} s", + Locale.ROOT); + public WrappedReportEntry( ReportEntry original, ReportEntryType reportEntryType, @@ -140,7 +151,7 @@ public String getStackTrace(boolean trimStackTrace) { } public String elapsedTimeAsString() { - return getElapsed() != null ? formatElapsedTime(getElapsed()) : null; + return getElapsed() != null ? elapsedTimeFormat.format(new Object[] {getElapsed() / ONE_SECOND}) : null; } String getReportSourceName() { @@ -165,18 +176,18 @@ String getReportName() { public String getOutput(boolean trimStackTrace) { String outputLine = - getElapsedTimeSummary() + " <<< " + getReportEntryType().name() + "!"; + getElapsedTimeSummary() + " <<< " + getReportEntryType().name() + "!"; String trimmedStackTrace = getStackTrace(trimStackTrace); return trimmedStackTrace == null ? outputLine : outputLine + NL + trimmedStackTrace; } public String getElapsedTimeVerbose() { - return "Time elapsed: " + (getElapsed() != null ? elapsedTimeAsString() + " s" : "(unknown)"); + return "Time elapsed: " + (getElapsed() != null ? elapsedTimeAsString() : "(unknown)"); } public String getElapsedTimeSummary() { String description = getName() == null ? getSourceName() : getClassMethodName(); - return description + " " + getElapsedTimeVerbose(); + return description + " -- " + getElapsedTimeVerbose(); } public boolean isErrorOrFailure() { diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java index 0e08294a90..6d337467ad 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/WrappedReportEntryTest.java @@ -76,9 +76,9 @@ public void testDisplayNames() { assertTrue(wr.isErrorOrFailure()); assertFalse(wr.isSkipped()); assertNull(wr.getStackTraceWriter()); - assertEquals("surefire.testcase.JunitParamsTest.testSum Time elapsed: 0.012 s", wr.getElapsedTimeSummary()); + assertEquals("surefire.testcase.JunitParamsTest.testSum -- Time elapsed: 0.012 s", wr.getElapsedTimeSummary()); assertEquals( - "surefire.testcase.JunitParamsTest.testSum Time elapsed: 0.012 s <<< ERROR!", wr.getOutput(false)); + "surefire.testcase.JunitParamsTest.testSum -- Time elapsed: 0.012 s <<< ERROR!", wr.getOutput(false)); assertEquals("exception", wr.getMessage()); } @@ -147,6 +147,6 @@ public void testElapsed() { ReportEntry reportEntry = new SimpleReportEntry(NORMAL_RUN, 1L, className, null, null, null); WrappedReportEntry wr = new WrappedReportEntry(reportEntry, null, 12, null, null); String elapsedTimeSummary = wr.getElapsedTimeSummary(); - assertEquals("[0] 1, 2, 3 (testSum) Time elapsed: 0.012 s", elapsedTimeSummary); + assertEquals("[0] 1, 2, 3 (testSum) -- Time elapsed: 0.012 s", elapsedTimeSummary); } } diff --git a/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java b/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java index a7bd1b0ac6..0c2a98a50b 100644 --- a/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java +++ b/maven-surefire-common/src/test/java/org/apache/maven/surefire/extensions/StatelessTestsetInfoReporterTest.java @@ -193,7 +193,7 @@ public void shouldReportTestsetLifecycle() { .hasSize(2) .containsSequence( "Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.03 s " - + "<<< FAILURE! - in pkg.MyTest", + + "<<< FAILURE! -- in pkg.MyTest", "pkg.MyTest failed"); verifyNoMoreInteractions(consoleLogger); } diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnit47ConcurrencyIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnit47ConcurrencyIT.java index fd9266e9b0..681fa00803 100644 --- a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnit47ConcurrencyIT.java +++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnit47ConcurrencyIT.java @@ -51,6 +51,6 @@ public void test47() throws Exception { containsString("Time elapsed: 1."), containsString("Time elapsed: 1 s"), containsString("Time elapsed: 0.9"))); - assertThat(result, endsWith(" s - in concurrentjunit47.src.test.java.junit47.BasicTest")); + assertThat(result, endsWith(" s -- in concurrentjunit47.src.test.java.junit47.BasicTest")); } } diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java index ee4e7fa362..d6513b1671 100644 --- a/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java +++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/JUnitPlatformEnginesIT.java @@ -381,7 +381,7 @@ public void testJupiterEngineWithDisplayNames() throws VerificationException { validator .getSurefireReportsFile("junitplatformenginejupiter.DisplayNameTest.txt", UTF_8) - .assertContainsText(" - in << ✨ >>"); + .assertContainsText(" -- in << ✨ >>"); validator .getSurefireReportsFile("junitplatformenginejupiter.DisplayNameTest-output.txt", UTF_8) diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1185DoNotSpawnTestsIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1185DoNotSpawnTestsIT.java index 9e82c1f623..6ea4db3163 100644 --- a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1185DoNotSpawnTestsIT.java +++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1185DoNotSpawnTestsIT.java @@ -32,9 +32,9 @@ * Example, UnlistedTest is the problem here because it runs with filtered out methods: * * Running pkg.UnlistedTest - * Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in pkg.UnlistedTest + * Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s -- in pkg.UnlistedTest * Running pkg.RunningTest - * Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in pkg.RunningTest + * Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s -- in pkg.RunningTest * * Results: * diff --git a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire747MethodParallelWithSuiteCountIT.java b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire747MethodParallelWithSuiteCountIT.java index 6005dec783..1220713312 100644 --- a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire747MethodParallelWithSuiteCountIT.java +++ b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire747MethodParallelWithSuiteCountIT.java @@ -115,7 +115,9 @@ public void testMethodsParallelWithSuite() throws VerificationException { containsString("Time elapsed: " + delayMax))); assertThat( line, - anyOf(endsWith(" s - in surefire747.SuiteTest1"), endsWith(" s - in surefire747.SuiteTest2"))); + anyOf( + endsWith(" s -- in surefire747.SuiteTest1"), + endsWith(" s -- in surefire747.SuiteTest2"))); } } }