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

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


The following commit(s) were added to refs/heads/master by this push:
     new c67033578 [SUREFIRE-1934] Ability to disable system-out/system-err for 
successfully passed tests
c67033578 is described below

commit c670335783cfcb43cfba7042b90748708eb299ce
Author: NissMoony <[email protected]>
AuthorDate: Thu Aug 24 10:00:49 2023 +0800

    [SUREFIRE-1934] Ability to disable system-out/system-err for successfully 
passed tests
    
    Co-authored-by: Michael Osipov <[email protected]>
    
    This closes #670
---
 .../plugin/surefire/AbstractSurefireMojo.java      | 28 ++++++++-
 .../maven/plugin/surefire/CommonReflector.java     |  2 +
 .../surefire/StartupReportConfiguration.java       |  9 +++
 .../DefaultStatelessReportMojoConfiguration.java   |  9 ++-
 .../extensions/SurefireStatelessReporter.java      |  3 +-
 .../junit5/JUnit5Xml30StatelessReporter.java       |  3 +-
 .../surefire/report/NullStatelessXmlReporter.java  |  2 +-
 .../surefire/report/StatelessXmlReporter.java      | 10 +++-
 .../maven/plugin/surefire/CommonReflectorTest.java |  1 +
 .../surefire/booterclient/ForkStarterTest.java     |  2 +
 .../booterclient/TestSetMockReporterFactory.java   |  1 +
 .../surefire/extensions/StatelessReporterTest.java |  4 +-
 .../report/DefaultReporterFactoryTest.java         |  3 +
 .../surefire/report/StatelessXmlReporterTest.java  | 13 ++--
 .../api/booter/ProviderParameterNames.java         |  2 +
 .../StatelessReportMojoConfiguration.java          | 10 +++-
 .../its/jiras/Surefire1934OutErrElementsIT.java    | 60 +++++++++++++++++++
 .../surefire-1934-disable-out-err-elements/pom.xml | 69 +++++++++++++++++++++
 .../disableOutErrElements/TestOutErrElements.java  | 23 +++++++
 .../surefire-1934-enable-out-err-elements/pom.xml  | 70 ++++++++++++++++++++++
 .../enableOutErrElements/TestOutErrElements.java   | 15 +++++
 .../surefire/junitcore/JUnitCoreParameters.java    | 12 +++-
 .../junitcore/JUnitCoreParametersTest.java         |  1 +
 .../maven/surefire/junitcore/JUnitCoreTester.java  |  1 +
 24 files changed, 337 insertions(+), 16 deletions(-)

diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index 664121d04..8552fcdcc 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -690,6 +690,16 @@ public abstract class AbstractSurefireMojo extends 
AbstractMojo implements Suref
     @Parameter(property = "enableAssertions", defaultValue = "true")
     private boolean enableAssertions;
 
+    /**
+     * Flag for including/excluding {@code <system-out />} and {@code 
<system-err />} elements for
+     * successfully passed tests in XML reports.
+     * Note that the default value may change to {@code false} is a future 
version.
+     *
+     * @since 3.3.1
+     */
+    @Parameter(property = "enableOutErrElements", defaultValue = "true")
+    private boolean enableOutErrElements;
+
     /**
      * The current build session instance.
      */
@@ -1474,6 +1484,10 @@ public abstract class AbstractSurefireMojo extends 
AbstractMojo implements Suref
                         
Double.toString(getParallelTestsTimeoutForcedInSeconds()));
         getProperties()
                 .setProperty(ProviderParameterNames.PARALLEL_OPTIMIZE_PROP, 
Boolean.toString(isParallelOptimized()));
+        getProperties()
+                .setProperty(
+                        ProviderParameterNames.ENABLE_OUT_ERR_ELEMENTS_PROP,
+                        Boolean.toString(isEnableOutErrElements()));
 
         String message = "parallel='" + usedParallel + '\''
                 + ", perCoreThreadCount=" + getPerCoreThreadCount()
@@ -1482,7 +1496,8 @@ public abstract class AbstractSurefireMojo extends 
AbstractMojo implements Suref
                 + ", threadCountSuites=" + getThreadCountSuites()
                 + ", threadCountClasses=" + getThreadCountClasses()
                 + ", threadCountMethods=" + getThreadCountMethods()
-                + ", parallelOptimized=" + isParallelOptimized();
+                + ", parallelOptimized=" + isParallelOptimized()
+                + ", enableOutErrElements=" + isEnableOutErrElements();
 
         logDebugOrCliShowErrors(message);
     }
@@ -1976,6 +1991,7 @@ public abstract class AbstractSurefireMojo extends 
AbstractMojo implements Suref
                 getReportSchemaLocation(),
                 getEncoding(),
                 isForking,
+                isEnableOutErrElements(),
                 xmlReporter,
                 outReporter,
                 testsetReporter);
@@ -2516,6 +2532,7 @@ public abstract class AbstractSurefireMojo extends 
AbstractMojo implements Suref
         checksum.add(getTempDir());
         checksum.add(useModulePath());
         checksum.add(getEnableProcessChecker());
+        checksum.add(isEnableOutErrElements());
         addPluginSpecificChecksumItems(checksum);
         return checksum.getSha1();
     }
@@ -3472,6 +3489,15 @@ public abstract class AbstractSurefireMojo extends 
AbstractMojo implements Suref
         this.enableAssertions = enableAssertions;
     }
 
+    public boolean isEnableOutErrElements() {
+        return enableOutErrElements;
+    }
+
+    @SuppressWarnings("UnusedDeclaration")
+    public void setEnableOutErrElements(boolean enableOutErrElements) {
+        this.enableOutErrElements = enableOutErrElements;
+    }
+
     public MavenSession getSession() {
         return session;
     }
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java
index 0d76ee8ce..4aaa34c63 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/CommonReflector.java
@@ -86,6 +86,7 @@ public class CommonReflector {
                 String.class,
                 String.class,
                 boolean.class,
+                boolean.class,
                 statelessTestsetReporter,
                 consoleOutputReporter,
                 statelessTestsetInfoReporter);
@@ -103,6 +104,7 @@ public class CommonReflector {
             reporterConfiguration.getXsdSchemaLocation(),
             reporterConfiguration.getEncoding().name(),
             reporterConfiguration.isForking(),
+            reporterConfiguration.isEnableOutErrElements(),
             reporterConfiguration.getXmlReporter().clone(surefireClassLoader),
             
reporterConfiguration.getConsoleOutputReporter().clone(surefireClassLoader),
             
reporterConfiguration.getTestsetReporter().clone(surefireClassLoader)
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/StartupReportConfiguration.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/StartupReportConfiguration.java
index d42e22cda..b4994869e 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/StartupReportConfiguration.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/StartupReportConfiguration.java
@@ -85,6 +85,8 @@ public final class StartupReportConfiguration {
 
     private final boolean isForking;
 
+    private final boolean enableOutErrElements;
+
     private final SurefireStatelessReporter xmlReporter;
 
     private final SurefireConsoleOutputReporter consoleOutputReporter;
@@ -108,6 +110,7 @@ public final class StartupReportConfiguration {
             String xsdSchemaLocation,
             String encoding,
             boolean isForking,
+            boolean enableOutErrElements,
             SurefireStatelessReporter xmlReporter,
             SurefireConsoleOutputReporter consoleOutputReporter,
             SurefireStatelessTestsetInfoReporter testsetReporter) {
@@ -127,6 +130,7 @@ public final class StartupReportConfiguration {
         String charset = trimToNull(encoding);
         this.encoding = charset == null ? UTF_8 : Charset.forName(charset);
         this.isForking = isForking;
+        this.enableOutErrElements = enableOutErrElements;
         this.xmlReporter = xmlReporter;
         this.consoleOutputReporter = consoleOutputReporter;
         this.testsetReporter = testsetReporter;
@@ -177,6 +181,7 @@ public final class StartupReportConfiguration {
                 trimStackTrace,
                 rerunFailingTestsCount,
                 xsdSchemaLocation,
+                enableOutErrElements,
                 testClassMethodRunHistory);
 
         return xmlReporter.isDisable() ? null : 
xmlReporter.createListener(xmlReporterConfig);
@@ -239,6 +244,10 @@ public final class StartupReportConfiguration {
         return isForking;
     }
 
+    public boolean isEnableOutErrElements() {
+        return enableOutErrElements;
+    }
+
     private File resolveReportsDirectory(Integer forkNumber) {
         return forkNumber == null ? reportsDirectory : 
replaceForkThreadsInPath(reportsDirectory, forkNumber);
     }
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/DefaultStatelessReportMojoConfiguration.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/DefaultStatelessReportMojoConfiguration.java
index f134e24a2..57cae2ad9 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/DefaultStatelessReportMojoConfiguration.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/DefaultStatelessReportMojoConfiguration.java
@@ -43,8 +43,15 @@ public class DefaultStatelessReportMojoConfiguration extends 
StatelessReportMojo
             boolean trimStackTrace,
             int rerunFailingTestsCount,
             String xsdSchemaLocation,
+            boolean enableOutErrElements,
             Map<String, Deque<WrappedReportEntry>> testClassMethodRunHistory) {
-        super(reportsDirectory, reportNameSuffix, trimStackTrace, 
rerunFailingTestsCount, xsdSchemaLocation);
+        super(
+                reportsDirectory,
+                reportNameSuffix,
+                trimStackTrace,
+                rerunFailingTestsCount,
+                xsdSchemaLocation,
+                enableOutErrElements);
         this.testClassMethodRunHistory = testClassMethodRunHistory;
     }
 
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java
index ebd7d0051..5083418bc 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireStatelessReporter.java
@@ -68,7 +68,8 @@ public class SurefireStatelessReporter
                 false,
                 false,
                 false,
-                false);
+                false,
+                configuration.isEnableOutErrElements());
     }
 
     @Override
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5Xml30StatelessReporter.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5Xml30StatelessReporter.java
index 689a4caed..a72f22386 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5Xml30StatelessReporter.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/junit5/JUnit5Xml30StatelessReporter.java
@@ -107,7 +107,8 @@ public class JUnit5Xml30StatelessReporter extends 
SurefireStatelessReporter {
                 getUsePhrasedFileName(),
                 getUsePhrasedTestSuiteClassName(),
                 getUsePhrasedTestCaseClassName(),
-                getUsePhrasedTestCaseMethodName());
+                getUsePhrasedTestCaseMethodName(),
+                configuration.isEnableOutErrElements());
     }
 
     @Override
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatelessXmlReporter.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatelessXmlReporter.java
index 73ec5a282..dc24f66a3 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatelessXmlReporter.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/NullStatelessXmlReporter.java
@@ -29,7 +29,7 @@ class NullStatelessXmlReporter extends StatelessXmlReporter {
     static final NullStatelessXmlReporter INSTANCE = new 
NullStatelessXmlReporter();
 
     private NullStatelessXmlReporter() {
-        super(null, null, false, 0, null, null, null, false, false, false, 
false);
+        super(null, null, false, 0, null, null, null, false, false, false, 
false, true);
     }
 
     @Override
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 f5f2916c5..f8c14bdaa 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
@@ -116,6 +116,8 @@ public class StatelessXmlReporter implements 
StatelessReportEventListener<Wrappe
 
     private final boolean phrasedMethodName;
 
+    private final boolean enableOutErrElements;
+
     public StatelessXmlReporter(
             File reportsDirectory,
             String reportNameSuffix,
@@ -127,13 +129,15 @@ public class StatelessXmlReporter implements 
StatelessReportEventListener<Wrappe
             boolean phrasedFileName,
             boolean phrasedSuiteName,
             boolean phrasedClassName,
-            boolean phrasedMethodName) {
+            boolean phrasedMethodName,
+            boolean enableOutErrElements) {
         this.reportsDirectory = reportsDirectory;
         this.reportNameSuffix = reportNameSuffix;
         this.trimStackTrace = trimStackTrace;
         this.rerunFailingTestsCount = rerunFailingTestsCount;
         this.testClassMethodRunHistoryMap = testClassMethodRunHistoryMap;
         this.xsdSchemaLocation = xsdSchemaLocation;
+        this.enableOutErrElements = enableOutErrElements;
         this.xsdVersion = xsdVersion;
         this.phrasedFileName = phrasedFileName;
         this.phrasedSuiteName = phrasedSuiteName;
@@ -228,7 +232,9 @@ public class StatelessXmlReporter implements 
StatelessReportEventListener<Wrappe
                         methodEntry.getReportEntryType().getXmlTag(),
                         false);
             }
-            createOutErrElements(fw, ppw, methodEntry, outputStream);
+            if (methodEntry.getReportEntryType() != SUCCESS || 
enableOutErrElements) {
+                createOutErrElements(fw, ppw, methodEntry, outputStream);
+            }
             ppw.endElement();
         }
     }
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java
index 6c56e557d..45d9b27dd 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/CommonReflectorTest.java
@@ -82,6 +82,7 @@ public class CommonReflectorTest {
                 null,
                 null,
                 false,
+                true,
                 xmlReporter,
                 consoleOutputReporter,
                 infoReporter);
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java
index 7419ff3f7..b10e919b7 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkStarterTest.java
@@ -162,6 +162,7 @@ public class ForkStarterTest {
                 null,
                 null,
                 true,
+                true,
                 xmlReporter,
                 outputReporter,
                 statelessTestsetInfoReporter);
@@ -247,6 +248,7 @@ public class ForkStarterTest {
                 null,
                 null,
                 true,
+                true,
                 xmlReporter,
                 outputReporter,
                 statelessTestsetInfoReporter);
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
index 4ab995739..c8dc5b236 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
@@ -66,6 +66,7 @@ public class TestSetMockReporterFactory extends 
DefaultReporterFactory {
                 null,
                 null,
                 true,
+                true,
                 new SurefireStatelessReporter(),
                 new SurefireConsoleOutputReporter(),
                 new SurefireStatelessTestsetInfoReporter());
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StatelessReporterTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StatelessReporterTest.java
index e034e2f56..8ee90ee2c 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StatelessReporterTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/StatelessReporterTest.java
@@ -66,7 +66,7 @@ public class StatelessReporterTest {
         String schema = 
"https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd";;
         Map<String, Deque<WrappedReportEntry>> testClassMethodRunHistory = new 
HashMap<>();
         DefaultStatelessReportMojoConfiguration config = new 
DefaultStatelessReportMojoConfiguration(
-                reportsDirectory, reportNameSuffix, true, 5, schema, 
testClassMethodRunHistory);
+                reportsDirectory, reportNameSuffix, true, 5, schema, true, 
testClassMethodRunHistory);
         SurefireStatelessReporter extension = new SurefireStatelessReporter();
 
         assertThat(extension.getVersion()).isEqualTo("3.0.1");
@@ -141,7 +141,7 @@ public class StatelessReporterTest {
         String schema = 
"https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd";;
         Map<String, Deque<WrappedReportEntry>> testClassMethodRunHistory = new 
HashMap<>();
         DefaultStatelessReportMojoConfiguration config = new 
DefaultStatelessReportMojoConfiguration(
-                reportsDirectory, reportNameSuffix, true, 5, schema, 
testClassMethodRunHistory);
+                reportsDirectory, reportNameSuffix, true, 5, schema, true, 
testClassMethodRunHistory);
         JUnit5Xml30StatelessReporter extension = new 
JUnit5Xml30StatelessReporter();
 
         assertThat(extension.getVersion()).isEqualTo("3.0.1");
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java
index e767c30f1..081248f47 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactoryTest.java
@@ -85,6 +85,7 @@ public class DefaultReporterFactoryTest extends TestCase {
                 null,
                 null,
                 false,
+                true,
                 new SurefireStatelessReporter(),
                 new SurefireConsoleOutputReporter(),
                 new SurefireStatelessTestsetInfoReporter());
@@ -288,6 +289,7 @@ public class DefaultReporterFactoryTest extends TestCase {
                 null,
                 null,
                 false,
+                true,
                 new SurefireStatelessReporter(),
                 new SurefireConsoleOutputReporter(),
                 new SurefireStatelessTestsetInfoReporter());
@@ -352,6 +354,7 @@ public class DefaultReporterFactoryTest extends TestCase {
                 null,
                 null,
                 false,
+                true,
                 new SurefireStatelessReporter(),
                 new SurefireConsoleOutputReporter(),
                 new SurefireStatelessTestsetInfoReporter());
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
index f46bb2001..70e87e0e1 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
@@ -109,7 +109,8 @@ public class StatelessXmlReporterTest extends TestCase {
                 false,
                 false,
                 false,
-                false);
+                false,
+                true);
         reporter.cleanTestHistoryMap();
 
         ReportEntry reportEntry = new SimpleReportEntry(
@@ -169,7 +170,8 @@ public class StatelessXmlReporterTest extends TestCase {
                 false,
                 false,
                 false,
-                false);
+                false,
+                true);
         reporter.testSetCompleted(testSetReportEntry, stats);
 
         FileInputStream fileInputStream = new 
FileInputStream(expectedReportFile);
@@ -271,7 +273,8 @@ public class StatelessXmlReporterTest extends TestCase {
                 false,
                 false,
                 false,
-                false);
+                false,
+                true);
 
         reporter.testSetCompleted(testSetReportEntry, stats);
         reporter.testSetCompleted(testSetReportEntry, rerunStats);
@@ -370,7 +373,7 @@ public class StatelessXmlReporterTest extends TestCase {
         rerunStats.testSucceeded(testTwoSecondError);
 
         StatelessXmlReporter reporter = new StatelessXmlReporter(
-                reportDir, null, false, 1, new HashMap<>(), XSD, "3.0.1", 
false, false, false, false);
+                reportDir, null, false, 1, new HashMap<>(), XSD, "3.0.1", 
false, false, false, false, true);
 
         WrappedReportEntry testSetReportEntry = new WrappedReportEntry(
                 new SimpleReportEntry(
@@ -534,7 +537,7 @@ public class StatelessXmlReporterTest extends TestCase {
                 null);
 
         StatelessXmlReporter reporter = new StatelessXmlReporter(
-                reportDir, null, false, 1, new HashMap<>(), XSD, "3.0.1", 
false, false, false, false);
+                reportDir, null, false, 1, new HashMap<>(), XSD, "3.0.1", 
false, false, false, false, true);
 
         reporter.testSetCompleted(testReport, stats);
     }
diff --git 
a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ProviderParameterNames.java
 
b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ProviderParameterNames.java
index d59d3de3e..95da2d3be 100644
--- 
a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ProviderParameterNames.java
+++ 
b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ProviderParameterNames.java
@@ -45,4 +45,6 @@ public class ProviderParameterNames {
     public static final String PARALLEL_TIMEOUTFORCED_PROP = 
"paralleltimeoutforced";
 
     public static final String PARALLEL_OPTIMIZE_PROP = "paralleloptimization";
+
+    public static final String ENABLE_OUT_ERR_ELEMENTS_PROP = 
"enableouterrelements";
 }
diff --git 
a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportMojoConfiguration.java
 
b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportMojoConfiguration.java
index f0424207a..ec3716deb 100644
--- 
a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportMojoConfiguration.java
+++ 
b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/StatelessReportMojoConfiguration.java
@@ -36,17 +36,21 @@ public class StatelessReportMojoConfiguration {
 
     private final String xsdSchemaLocation;
 
+    private final boolean enableOutErrElements;
+
     public StatelessReportMojoConfiguration(
             File reportsDirectory,
             String reportNameSuffix,
             boolean trimStackTrace,
             int rerunFailingTestsCount,
-            String xsdSchemaLocation) {
+            String xsdSchemaLocation,
+            boolean enableOutErrElements) {
         this.reportsDirectory = reportsDirectory;
         this.reportNameSuffix = reportNameSuffix;
         this.trimStackTrace = trimStackTrace;
         this.rerunFailingTestsCount = rerunFailingTestsCount;
         this.xsdSchemaLocation = xsdSchemaLocation;
+        this.enableOutErrElements = enableOutErrElements;
     }
 
     public File getReportsDirectory() {
@@ -68,4 +72,8 @@ public class StatelessReportMojoConfiguration {
     public String getXsdSchemaLocation() {
         return xsdSchemaLocation;
     }
+
+    public boolean isEnableOutErrElements() {
+        return enableOutErrElements;
+    }
 }
diff --git 
a/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1934OutErrElementsIT.java
 
b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1934OutErrElementsIT.java
new file mode 100644
index 000000000..8f46ce779
--- /dev/null
+++ 
b/surefire-its/src/test/java/org/apache/maven/surefire/its/jiras/Surefire1934OutErrElementsIT.java
@@ -0,0 +1,60 @@
+/*
+ * 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.surefire.its.jiras;
+
+import org.apache.maven.surefire.its.fixture.OutputValidator;
+import org.apache.maven.surefire.its.fixture.SurefireJUnit4IntegrationTestCase;
+import org.apache.maven.surefire.its.fixture.TestFile;
+import org.junit.Test;
+
+/**
+ * Test for SUREFURE-1934. Enabling and disabling system-out and system-err 
elements in plugin configuration.
+ *
+ * @author NissMoony
+ */
+public class Surefire1934OutErrElementsIT extends 
SurefireJUnit4IntegrationTestCase {
+
+    @Test
+    public void testOutErrElementsDisabled() {
+        final OutputValidator outputValidator = 
unpack("/surefire-1934-disable-out-err-elements")
+                .maven()
+                .withFailure()
+                .executeTest();
+        final TestFile reportFile =
+                
outputValidator.getSurefireReportsXmlFile("TEST-disableOutErrElements.TestOutErrElements.xml");
+
+        reportFile.assertNotContainsText("<system-out><![CDATA[System-out 
output not expected in the report.");
+        reportFile.assertNotContainsText(
+                "<system-err><![CDATA[[main] INFO 
disableOutErrElements.TestOutErrElements - Log output not expected in test 
report.");
+        reportFile.assertContainsText("<system-out><![CDATA[System-out output 
expected in the report.");
+        reportFile.assertContainsText(
+                "<system-err><![CDATA[[main] INFO 
disableOutErrElements.TestOutErrElements - Log output expected in test 
report.");
+    }
+
+    @Test
+    public void testOutErrElementsEnabled() {
+        final OutputValidator outputValidator =
+                unpack("/surefire-1934-enable-out-err-elements").executeTest();
+        final TestFile reportFile =
+                
outputValidator.getSurefireReportsXmlFile("TEST-enableOutErrElements.TestOutErrElements.xml");
+
+        reportFile.assertContainsText("<system-out>");
+        reportFile.assertContainsText("<system-err>");
+    }
+}
diff --git 
a/surefire-its/src/test/resources/surefire-1934-disable-out-err-elements/pom.xml
 
b/surefire-its/src/test/resources/surefire-1934-disable-out-err-elements/pom.xml
new file mode 100644
index 000000000..4deef9036
--- /dev/null
+++ 
b/surefire-its/src/test/resources/surefire-1934-disable-out-err-elements/pom.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.maven.surefire</groupId>
+    <artifactId>it-parent</artifactId>
+    <version>1.0</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <groupId>org.apache.maven.plugins.surefire</groupId>
+  <artifactId>surefire-1934-disable-out-err-elements</artifactId>
+  <version>1.0</version>
+  <url>http://maven.apache.org</url>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>1.7.36</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.36</version>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>${surefire.version}</version>
+        <configuration>
+          <enableOutErrElements>false</enableOutErrElements>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git 
a/surefire-its/src/test/resources/surefire-1934-disable-out-err-elements/src/test/java/disableOutErrElements/TestOutErrElements.java
 
b/surefire-its/src/test/resources/surefire-1934-disable-out-err-elements/src/test/java/disableOutErrElements/TestOutErrElements.java
new file mode 100644
index 000000000..95f4cae46
--- /dev/null
+++ 
b/surefire-its/src/test/resources/surefire-1934-disable-out-err-elements/src/test/java/disableOutErrElements/TestOutErrElements.java
@@ -0,0 +1,23 @@
+package disableOutErrElements;
+
+import org.junit.Test;
+import org.slf4j.LoggerFactory;
+
+public class TestOutErrElements {
+
+    @Test
+    public void successfulTestWithLogs() {
+        LoggerFactory.getLogger(TestOutErrElements.class).info("Log output not 
expected in test report.");
+        System.out.println("System-out output not expected in the report.");
+        System.err.println("System-err output not expected in the report.");
+    }
+
+    @Test
+    public void failedTestWithLogs() throws Exception {
+        LoggerFactory.getLogger(TestOutErrElements.class).info("Log output 
expected in test report.");
+        System.out.println("System-out output expected in the report.");
+        System.err.println("System-err output expected in the report.");
+        throw new Exception("Expected to fail");
+    }
+
+}
diff --git 
a/surefire-its/src/test/resources/surefire-1934-enable-out-err-elements/pom.xml 
b/surefire-its/src/test/resources/surefire-1934-enable-out-err-elements/pom.xml
new file mode 100644
index 000000000..7b0723b68
--- /dev/null
+++ 
b/surefire-its/src/test/resources/surefire-1934-enable-out-err-elements/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.maven.surefire</groupId>
+    <artifactId>it-parent</artifactId>
+    <version>1.0</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <groupId>org.apache.maven.plugins.surefire</groupId>
+  <artifactId>surefire-1934-disable-out-err-elements</artifactId>
+  <version>1.0</version>
+  <url>http://maven.apache.org</url>
+
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>1.7.36</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.36</version>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>${surefire.version}</version>
+        <configuration>
+          <!-- Default value, but setting it explicitly for test -->
+          <enableOutErrElements>true</enableOutErrElements>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git 
a/surefire-its/src/test/resources/surefire-1934-enable-out-err-elements/src/test/java/enableOutErrElements/TestOutErrElements.java
 
b/surefire-its/src/test/resources/surefire-1934-enable-out-err-elements/src/test/java/enableOutErrElements/TestOutErrElements.java
new file mode 100644
index 000000000..37f106cc8
--- /dev/null
+++ 
b/surefire-its/src/test/resources/surefire-1934-enable-out-err-elements/src/test/java/enableOutErrElements/TestOutErrElements.java
@@ -0,0 +1,15 @@
+package enableOutErrElements;
+
+import org.junit.Test;
+import org.slf4j.LoggerFactory;
+
+public class TestOutErrElements {
+
+    @Test
+    public void successfulTestWithLogs() {
+        LoggerFactory.getLogger(TestOutErrElements.class).info("Log output 
expected in test report.");
+        System.out.println("System-out output expected in the report.");
+        System.err.println("System-err output expected in the report.");
+    }
+
+}
diff --git 
a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java
 
b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java
index 600baf476..3e9beca45 100644
--- 
a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java
+++ 
b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreParameters.java
@@ -48,6 +48,8 @@ public final class JUnitCoreParameters {
 
     public static final String PARALLEL_OPTIMIZE_KEY = 
ProviderParameterNames.PARALLEL_OPTIMIZE_PROP;
 
+    public static final String ENABLE_OUT_ERR_ELEMENTS_KEY = 
ProviderParameterNames.ENABLE_OUT_ERR_ELEMENTS_PROP;
+
     private final String parallel;
 
     private final boolean perCoreThreadCount;
@@ -68,6 +70,8 @@ public final class JUnitCoreParameters {
 
     private final boolean parallelOptimization;
 
+    private final boolean enableOutErrElements;
+
     public JUnitCoreParameters(Map<String, String> properties) {
         parallel = property(properties, PARALLEL_KEY, "none").toLowerCase();
         perCoreThreadCount = property(properties, PERCORETHREADCOUNT_KEY, 
true);
@@ -79,6 +83,7 @@ public final class JUnitCoreParameters {
         parallelTestsTimeoutInSeconds = Math.max(property(properties, 
PARALLEL_TIMEOUT_KEY, 0d), 0);
         parallelTestsTimeoutForcedInSeconds = Math.max(property(properties, 
PARALLEL_TIMEOUTFORCED_KEY, 0d), 0);
         parallelOptimization = property(properties, PARALLEL_OPTIMIZE_KEY, 
true);
+        enableOutErrElements = property(properties, 
ENABLE_OUT_ERR_ELEMENTS_KEY, true);
     }
 
     private static Collection<String> lowerCase(String... elements) {
@@ -164,13 +169,18 @@ public final class JUnitCoreParameters {
         return parallelOptimization;
     }
 
+    public boolean isEnableOutErrElements() {
+        return enableOutErrElements;
+    }
+
     @Override
     public String toString() {
         return "parallel='" + parallel + '\'' + ", perCoreThreadCount=" + 
perCoreThreadCount + ", threadCount="
                 + threadCount + ", useUnlimitedThreads=" + useUnlimitedThreads 
+ ", threadCountSuites="
                 + threadCountSuites
                 + ", threadCountClasses=" + threadCountClasses + ", 
threadCountMethods=" + threadCountMethods
-                + ", parallelOptimization=" + parallelOptimization;
+                + ", parallelOptimization=" + parallelOptimization
+                + ", enableOutErrElements=" + enableOutErrElements;
     }
 
     private static boolean property(Map<String, String> properties, String 
key, boolean fallback) {
diff --git 
a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreParametersTest.java
 
b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreParametersTest.java
index 8dd9f55da..c635ca0d5 100644
--- 
a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreParametersTest.java
+++ 
b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreParametersTest.java
@@ -45,6 +45,7 @@ public class JUnitCoreParametersTest {
         assertThat(newTestSetDefault().getParallelTestsTimeoutInSeconds(), 
is(0d));
         
assertThat(newTestSetDefault().getParallelTestsTimeoutForcedInSeconds(), 
is(0d));
         assertTrue(newTestSetDefault().isParallelOptimization());
+        assertTrue(newTestSetDefault().isEnableOutErrElements());
     }
 
     @Test
diff --git 
a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
 
b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
index ef9c00c70..279a5c405 100644
--- 
a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
+++ 
b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
@@ -109,6 +109,7 @@ public class JUnitCoreTester {
                 null,
                 null,
                 false,
+                true,
                 new SurefireStatelessReporter(),
                 new SurefireConsoleOutputReporter(),
                 new SurefireStatelessTestsetInfoReporter());


Reply via email to