This is an automated email from the ASF dual-hosted git repository. sjaranowski pushed a commit to branch miss-tests in repository https://gitbox.apache.org/repos/asf/maven-integration-testing.git
commit 553fc5be960b20a45df4a88c925a051afc878182 Author: Slawomir Jaranowski <s.jaranow...@gmail.com> AuthorDate: Fri Feb 24 20:42:40 2023 +0100 Detecting tests which was not added to TestSuiteOrdering Even test is skipped by `@Disabled` annotation newer surefire schedule it for execution. When tests are missing in TestSuiteOrdering are executed as one of first tests in unpredictable order. --- core-it-suite/pom.xml | 2 ++ .../it/MavenITmng5206PlexusLifecycleHonoured.java | 2 ++ .../maven/it/MavenITmng5503ZipInReactorTest.java | 2 ++ .../org/apache/maven/it/TestSuiteOrdering.java | 27 +++++++++++++++++++--- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/core-it-suite/pom.xml b/core-it-suite/pom.xml index 5724c27bf..276df29f5 100644 --- a/core-it-suite/pom.xml +++ b/core-it-suite/pom.xml @@ -498,6 +498,8 @@ under the License. <includes> <include>**/MavenIT*.java</include> </includes> + <!-- test annotated by @Tag("disabled") will be skipped from executions --> + <excludedGroups>disabled</excludedGroups> <forkCount>0</forkCount> <reuseForks>true</reuseForks> <skip>true</skip> diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5206PlexusLifecycleHonoured.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5206PlexusLifecycleHonoured.java index a0e6e27d9..2090a5ec1 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5206PlexusLifecycleHonoured.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5206PlexusLifecycleHonoured.java @@ -25,6 +25,7 @@ import org.apache.maven.shared.verifier.Verifier; import java.io.File; import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; /** @@ -32,6 +33,7 @@ import org.junit.jupiter.api.Test; * * @author Olivier Lamy */ +@Tag("disabled") @Disabled public class MavenITmng5206PlexusLifecycleHonoured extends AbstractMavenIntegrationTestCase diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5503ZipInReactorTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5503ZipInReactorTest.java index b95e3fd81..50994049f 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5503ZipInReactorTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5503ZipInReactorTest.java @@ -25,6 +25,7 @@ import org.apache.maven.shared.verifier.Verifier; import java.io.File; import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; /** @@ -32,6 +33,7 @@ import org.junit.jupiter.api.Test; * * @author jvz */ +@Tag( "disabled" ) @Disabled public class MavenITmng5503ZipInReactorTest extends AbstractMavenIntegrationTestCase diff --git a/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java b/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java index c44203deb..0ea14e504 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java @@ -22,14 +22,17 @@ package org.apache.maven.it; import java.io.PrintStream; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.maven.shared.verifier.Verifier; import org.junit.jupiter.api.ClassDescriptor; import org.junit.jupiter.api.ClassOrderer; import org.junit.jupiter.api.ClassOrdererContext; +import org.junit.jupiter.api.Tag; /** * The Core IT suite. @@ -39,6 +42,9 @@ public class TestSuiteOrdering implements ClassOrderer private static PrintStream out = System.out; + // store missed test to show info only once + private final static List<Class<?>> MISSED_TESTS = new ArrayList<>(); + final Map<Class<?>, Integer> tests = new HashMap<>(); private static void infoProperty( PrintStream info, String property ) @@ -744,21 +750,36 @@ public class TestSuiteOrdering implements ClassOrderer */ } - void addTestSuite( Class<?> clazz ) { + void addTestSuite( Class<?> clazz ) + { addTestSuite( clazz, tests.size() ); } - void addTestSuite( Class<?> clazz, int order ) { + void addTestSuite( Class<?> clazz, int order ) + { tests.put( clazz, order ); } - int getIndex( ClassDescriptor cd ) { + int getIndex( ClassDescriptor cd ) + { Integer i = tests.get( cd.getTestClass() ); return i != null ? i : -1; } public void orderClasses( ClassOrdererContext context ) { + context.getClassDescriptors().stream() + .filter( cd -> !MISSED_TESTS.contains( cd.getTestClass() ) ) + .filter( cd -> getIndex( cd ) == -1 ) + .filter( cd -> cd.findRepeatableAnnotations( Tag.class ).stream() + .noneMatch( t -> "disabled".equals( t.value() ) ) ) + .forEach( cd -> { + out.println( "Test " + cd.getTestClass() + + " is not present in TestSuiteOrdering " + System.lineSeparator() + + "\t- please add it or annotate with @Tag(\"disabled\")" + System.lineSeparator() ); + MISSED_TESTS.add( cd.getTestClass() ); + } ); + context.getClassDescriptors().sort( Comparator.comparing( this::getIndex ) ); }