You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2021/05/10 23:33:38 UTC
[maven-surefire] 01/01: [SUREFIRE-1910] Missleading error message
when using -Dtest=....
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch SUREFIRE-1910
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit 16f510d3cd08ffa78693e4038cb781a24abab703
Author: tibordigana <ti...@gmail.com>
AuthorDate: Tue May 11 01:33:29 2021 +0200
[SUREFIRE-1910] Missleading error message when using -Dtest=....
---
.../maven/plugin/failsafe/IntegrationTestMojo.java | 6 +--
.../apache/maven/plugin/failsafe/VerifyMojo.java | 10 ++--
.../plugin/surefire/AbstractSurefireMojo.java | 59 ++++++++++++++--------
.../surefire/SurefireExecutionParameters.java | 2 +-
.../maven/plugin/surefire/SurefireHelper.java | 2 +-
.../plugin/surefire/SurefireReportParameters.java | 2 +-
.../AbstractSurefireMojoJava7PlusTest.java | 4 +-
.../plugin/surefire/AbstractSurefireMojoTest.java | 4 +-
.../maven/plugin/surefire/MojoMocklessTest.java | 4 +-
.../maven/plugin/surefire/SurefirePlugin.java | 6 +--
10 files changed, 59 insertions(+), 40 deletions(-)
diff --git a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
index a91139c..ee12c6b 100644
--- a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
+++ b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
@@ -135,8 +135,8 @@ public class IntegrationTestMojo
*
* @since 2.12
*/
- @Parameter( property = "it.failIfNoSpecifiedTests" )
- private Boolean failIfNoSpecifiedTests;
+ @Parameter( property = "it.failIfNoSpecifiedTests", defaultValue = "true" )
+ private boolean failIfNoSpecifiedTests;
/**
* Attach a debugger to the forked JVM. If set to "true", the process will suspend and wait for a debugger to attach
@@ -862,7 +862,7 @@ public class IntegrationTestMojo
}
@Override
- public Boolean getFailIfNoSpecifiedTests()
+ public boolean getFailIfNoSpecifiedTests()
{
return failIfNoSpecifiedTests;
}
diff --git a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java
index 52eacbe..b691741 100644
--- a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java
+++ b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/VerifyMojo.java
@@ -132,12 +132,12 @@ public class VerifyMojo
private File[] summaryFiles;
/**
- * Set this to "true" to cause a failure if there are no tests to run.
+ * Set this to "true" to cause a failure if there are no tests to run. Defaults to "false".
*
* @since 2.4
*/
- @Parameter( property = "failIfNoTests" )
- private Boolean failIfNoTests;
+ @Parameter( property = "failIfNoTests", defaultValue = "false" )
+ private boolean failIfNoTests;
/**
* Set this to a value greater than 0 to fail the whole test set if the cumulative number of flakes reaches
@@ -233,7 +233,7 @@ public class VerifyMojo
if ( !getTestClassesDirectory().exists() )
{
- if ( getFailIfNoTests() != null && getFailIfNoTests() )
+ if ( getFailIfNoTests() )
{
throw new MojoFailureException( "No tests to run!" );
}
@@ -360,7 +360,7 @@ public class VerifyMojo
}
@Override
- public Boolean getFailIfNoTests()
+ public boolean getFailIfNoTests()
{
return failIfNoTests;
}
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 5109fde..d75010c 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
@@ -121,7 +121,6 @@ import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.zip.ZipFile;
-import static java.lang.Boolean.TRUE;
import static java.lang.Integer.parseInt;
import static java.lang.Thread.currentThread;
import static java.util.Arrays.asList;
@@ -152,6 +151,9 @@ import static org.apache.maven.surefire.api.util.ReflectionUtils.invokeMethodWit
import static org.apache.maven.surefire.api.util.ReflectionUtils.tryGetMethod;
import static org.apache.maven.surefire.api.booter.ProviderParameterNames.INCLUDE_JUNIT5_ENGINES_PROP;
import static org.apache.maven.surefire.api.booter.ProviderParameterNames.EXCLUDE_JUNIT5_ENGINES_PROP;
+import static org.apache.maven.plugin.surefire.AbstractSurefireMojo.NoTestsFailureReason.NO_FAILURE;
+import static org.apache.maven.plugin.surefire.AbstractSurefireMojo.NoTestsFailureReason.NO_SPECIFIED_TESTS_RUN;
+import static org.apache.maven.plugin.surefire.AbstractSurefireMojo.NoTestsFailureReason.NO_TESTS_RUN;
/**
* Abstract base class for running tests using Surefire.
@@ -383,8 +385,8 @@ public abstract class AbstractSurefireMojo
*
* @since 2.4
*/
- @Parameter( property = "failIfNoTests" )
- private Boolean failIfNoTests;
+ @Parameter( property = "failIfNoTests", defaultValue = "false" )
+ private boolean failIfNoTests;
/**
* <strong>DEPRECATED</strong> since version 2.14. Use {@code forkCount} and {@code reuseForks} instead.
@@ -927,13 +929,20 @@ public abstract class AbstractSurefireMojo
DefaultScanResult scan = scanForTestClasses();
if ( !hasSuiteXmlFiles() && scan.isEmpty() )
{
- if ( getEffectiveFailIfNoTests() )
+ switch ( getEffectiveFailIfNoTests() )
{
- throw new MojoFailureException(
- "No tests were executed! (Set -DfailIfNoTests=false to ignore this error.)" );
+ case NO_SPECIFIED_TESTS_RUN:
+ throw new MojoFailureException(
+ "No tests were executed! (Set -DfailIfNoTests=false to ignore this error.)" );
+ case NO_TESTS_RUN:
+ throw new MojoFailureException( "No tests matching pattern \""
+ + getSpecificTests().toString()
+ + "\" were executed! (Set "
+ + "-D" + getPluginName() + ".failIfNoSpecifiedTests=false to ignore this error.)" );
+ default:
+ handleSummary( noTestsRun(), null );
+ return;
}
- handleSummary( noTestsRun(), null );
- return;
}
logReportsDirectory();
executeAfterPreconditionsChecked( scan, platform );
@@ -1115,7 +1124,7 @@ public abstract class AbstractSurefireMojo
if ( !getTestClassesDirectory().exists()
&& ( getDependenciesToScan() == null || getDependenciesToScan().length == 0 ) )
{
- if ( TRUE.equals( getFailIfNoTests() ) )
+ if ( getFailIfNoTests() )
{
throw new MojoFailureException( "No tests to run!" );
}
@@ -1839,26 +1848,26 @@ public abstract class AbstractSurefireMojo
return runOrders.contains( RunOrder.BALANCED ) || runOrders.contains( RunOrder.FAILEDFIRST );
}
- private boolean getEffectiveFailIfNoTests()
+ private NoTestsFailureReason getEffectiveFailIfNoTests()
{
if ( isSpecificTestSpecified() )
{
- if ( getFailIfNoSpecifiedTests() != null )
+ if ( getFailIfNoSpecifiedTests() )
{
- return getFailIfNoSpecifiedTests();
+ return NO_SPECIFIED_TESTS_RUN;
}
- else if ( getFailIfNoTests() != null )
+ else if ( getFailIfNoTests() )
{
- return getFailIfNoTests();
+ return NO_TESTS_RUN;
}
else
{
- return true;
+ return NO_FAILURE;
}
}
else
{
- return getFailIfNoTests() != null && getFailIfNoTests();
+ return getFailIfNoTests() ? NO_TESTS_RUN : NO_FAILURE;
}
}
@@ -1881,7 +1890,7 @@ public abstract class AbstractSurefireMojo
DirectoryScannerParameters directoryScannerParameters = null;
if ( hasSuiteXmlFiles() && !isSpecificTestSpecified() )
{
- actualFailIfNoTests = getFailIfNoTests() != null && getFailIfNoTests();
+ actualFailIfNoTests = getFailIfNoTests();
if ( !isTestNg )
{
throw new MojoExecutionException( "suiteXmlFiles is configured, but there is no TestNG dependency" );
@@ -1891,12 +1900,12 @@ public abstract class AbstractSurefireMojo
{
if ( isSpecificTestSpecified() )
{
- actualFailIfNoTests = getEffectiveFailIfNoTests();
+ actualFailIfNoTests = getEffectiveFailIfNoTests() != NO_FAILURE;
setFailIfNoTests( actualFailIfNoTests );
}
else
{
- actualFailIfNoTests = getFailIfNoTests() != null && getFailIfNoTests();
+ actualFailIfNoTests = getFailIfNoTests();
}
// @todo remove these three params and use DirectoryScannerParameters to pass into DirectoryScanner only
@@ -3742,7 +3751,7 @@ public abstract class AbstractSurefireMojo
}
- public Boolean getFailIfNoTests()
+ public boolean getFailIfNoTests()
{
return failIfNoTests;
}
@@ -4215,4 +4224,14 @@ public abstract class AbstractSurefireMojo
return classpath;
}
}
+
+ /**
+ * No tests run failures.
+ */
+ enum NoTestsFailureReason
+ {
+ NO_FAILURE,
+ NO_SPECIFIED_TESTS_RUN,
+ NO_TESTS_RUN,
+ }
}
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireExecutionParameters.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireExecutionParameters.java
index a570b82..2275b32 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireExecutionParameters.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireExecutionParameters.java
@@ -123,7 +123,7 @@ public interface SurefireExecutionParameters
void setEncoding( String encoding );
- Boolean getFailIfNoSpecifiedTests();
+ boolean getFailIfNoSpecifiedTests();
void setFailIfNoSpecifiedTests( boolean failIfNoSpecifiedTests );
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
index d9a6918..d301ecc 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireHelper.java
@@ -253,7 +253,7 @@ public final class SurefireHelper
private static boolean failIfNoTests( SurefireReportParameters reportParameters )
{
- return reportParameters.getFailIfNoTests() != null && reportParameters.getFailIfNoTests();
+ return reportParameters.getFailIfNoTests();
}
private static boolean isFatal( Exception firstForkException )
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireReportParameters.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireReportParameters.java
index 8b964e7..da808ed 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireReportParameters.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/SurefireReportParameters.java
@@ -56,7 +56,7 @@ public interface SurefireReportParameters
void setReportsDirectory( File reportsDirectory );
- Boolean getFailIfNoTests();
+ boolean getFailIfNoTests();
void setFailIfNoTests( boolean failIfNoTests );
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
index f8a4c10..c1f8dc8 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
@@ -789,9 +789,9 @@ public class AbstractSurefireMojoJava7PlusTest
}
@Override
- public Boolean getFailIfNoSpecifiedTests()
+ public boolean getFailIfNoSpecifiedTests()
{
- return null;
+ return false;
}
@Override
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
index 45e35b7..da3bcfe 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
@@ -2339,9 +2339,9 @@ public class AbstractSurefireMojoTest
}
@Override
- public Boolean getFailIfNoSpecifiedTests()
+ public boolean getFailIfNoSpecifiedTests()
{
- return null;
+ return false;
}
@Override
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
index fe7a44a..c98cb75 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
@@ -638,9 +638,9 @@ public class MojoMocklessTest
}
@Override
- public Boolean getFailIfNoSpecifiedTests()
+ public boolean getFailIfNoSpecifiedTests()
{
- return null;
+ return false;
}
@Override
diff --git a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
index 5f48cad..0e3d850 100644
--- a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
+++ b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
@@ -118,8 +118,8 @@ public class SurefirePlugin
*
* @since 2.12
*/
- @Parameter( property = "surefire.failIfNoSpecifiedTests" )
- private Boolean failIfNoSpecifiedTests;
+ @Parameter( property = "surefire.failIfNoSpecifiedTests", defaultValue = "true" )
+ private boolean failIfNoSpecifiedTests;
/**
* Attach a debugger to the forked JVM. If set to "true", the process will suspend and wait for a debugger to attach
@@ -685,7 +685,7 @@ public class SurefirePlugin
}
@Override
- public Boolean getFailIfNoSpecifiedTests()
+ public boolean getFailIfNoSpecifiedTests()
{
return failIfNoSpecifiedTests;
}