Repository: maven-surefire Updated Branches: refs/heads/3.0-rc1 70c8843e9 -> 6636b0693
Revert junit-plattform provider code from 3.0-rc1 branch. This code will be moved to the junit5 branch. This commit reverts: - Commit 70c8843e935882b0a78916894cb9f042964f2717 "SUREFIRE-1330: Fix module name in surefire-providers reactor" - Commit c9a1f973e334b402d59f9944c5a58d1db9c8da45 "Add contributors of the original provider implementation to pom.xml" - Commit 6e83aa3808bcb4accce54a1b1c0ba91dd01a8812 "Rename JUnit5 provider to JUnit Platform provider, as suggested by @marcphilipp" - Commit ef6a391006ab1fa672dc26fc234b6411a7dfa888 "Configure shade plugin so that is does not explode" - Commit b08b1aeae4ad01582fd6264462a4a9345bfd065d "Make Checkstyle happy" - Commit 97f97167ea0aa07bba4bd864b1f686c2f79ca33d "Remove engine declaration - this should be done automatically by surefire" - Commit c197b926a5f02ab2a3842d4a8a736315c3c8eb33 "Move provider classes to maven surefire package" - Commit 30ee7b94c3421411aa6257e78f77fe8b88aa125e "Remove usage of internal JUnit API" - Commit 43fb41e8d4115830fbeb6d29f1f17efe8e04de5f "Remove unused filed" - Commit caceca16772c6d11302c2d8627c7f5b7d913878a "Add surefire-junit5 provider as module to the surefire build" - Commit 9283dee30decf62e12edd5eaea08abd811ee811f "Adopt Apache Maven code style" - Commit 62d00dca5709c0a089a65f810c1c66c2897b5003 "Use Apache Software Foundation License header" - Commit a0d0325db046f266abc401abe3e0047f6ce908c3 "Convert spaces to tabs" - Commit 0c329812e71f149bb7c92bfaa3fa37c6d2ec6eec "Remove LICENSE file, ALv2 will be part of the source distribution" - Commit 73e09a8b2b245e76e072c1809e7fa50be02e95b6 "SUREFIRE-1330: Import code from https://issues.apache.org/jira/browse/SUREFIRE-1330 unchanged as provided" Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/6636b069 Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/6636b069 Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/6636b069 Branch: refs/heads/3.0-rc1 Commit: 6636b0693de852a029961bbe676a61c6edfd4293 Parents: 70c8843 Author: Benedikt Ritter <brit...@apache.org> Authored: Mon Jun 12 08:21:11 2017 +0200 Committer: Benedikt Ritter <brit...@apache.org> Committed: Mon Jun 12 08:25:00 2017 +0200 ---------------------------------------------------------------------- surefire-providers/pom.xml | 1 - .../surefire-junit-platform/pom.xml | 187 ----------- .../junitplatform/JUnitPlatformProvider.java | 202 ------------ .../junitplatform/RunListenerAdapter.java | 150 --------- .../junitplatform/TestPlanScannerFilter.java | 64 ---- ....maven.surefire.providerapi.SurefireProvider | 1 - .../JUnitPlatformProviderTests.java | 325 ------------------- .../junitplatform/RunListenerAdapterTests.java | 262 --------------- .../TestPlanScannerFilterTests.java | 190 ----------- 9 files changed, 1382 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/pom.xml ---------------------------------------------------------------------- diff --git a/surefire-providers/pom.xml b/surefire-providers/pom.xml index 3641fd5..a90d50d 100644 --- a/surefire-providers/pom.xml +++ b/surefire-providers/pom.xml @@ -41,7 +41,6 @@ <module>surefire-junit3</module> <module>surefire-junit4</module> <module>surefire-junit47</module> - <module>surefire-junit-platform</module> <module>surefire-testng-utils</module> <module>surefire-testng</module> </modules> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/pom.xml ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/pom.xml b/surefire-providers/surefire-junit-platform/pom.xml deleted file mode 100644 index a4287bf..0000000 --- a/surefire-providers/surefire-junit-platform/pom.xml +++ /dev/null @@ -1,187 +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. - --> - -<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>surefire-providers</artifactId> - <version>2.19.2-SNAPSHOT</version> - </parent> - - <artifactId>surefire-junit-platform</artifactId> - - <name>SureFire JUnit Platform Runner</name> - <description>SureFire JUnit Platform Runner</description> - - <properties> - <javaVersion>8</javaVersion> - <junit-platform.version>1.0.0-M3</junit-platform.version> - <junit-jupiter.version>5.0.0-M3</junit-jupiter.version> - </properties> - - <dependencies> - <dependency> - <groupId>org.junit.platform</groupId> - <artifactId>junit-platform-launcher</artifactId> - <version>${junit-platform.version}</version> - </dependency> - <dependency> - <groupId>org.junit.platform</groupId> - <artifactId>junit-platform-engine</artifactId> - <version>${junit-platform.version}</version> - </dependency> - <dependency> - <groupId>org.apache.maven.surefire</groupId> - <artifactId>common-java5</artifactId> - <version>${project.version}</version> - </dependency> - - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-api</artifactId> - <version>${junit-jupiter.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-engine</artifactId> - <version>${junit-jupiter.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <version>2.2.22</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <version>3.6.0</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <resources> - <resource> - <directory>src/main/resources/META-INF</directory> - <targetPath>META-INF</targetPath> - </resource> - </resources> - - <plugins> - <!-- Override default configuration for Java 1.6 --> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>animal-sniffer-maven-plugin</artifactId> - <version>1.14</version> - <executions> - <execution> - <id>signature-check</id> - <goals> - <goal>check</goal> - </goals> - </execution> - </executions> - <configuration> - <signature> - <groupId>org.codehaus.mojo.signature</groupId> - <artifactId>java18</artifactId> - <version>1.0</version> - </signature> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <jvm>${java.home}/bin/java</jvm> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>1.4</version> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - <configuration> - <artifactSet> - <includes> - <include>org.apache.maven.surefire:common-java5</include> - </includes> - </artifactSet> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <contributors> - <contributor> - <name>Konstantin Lutovich</name> - <roles> - <role>Contributed to the original provider implementation</role> - </roles> - </contributor> - <contributor> - <name>Shintaro Katafuchi</name> - <roles> - <role>Contributed to the original provider implementation</role> - </roles> - </contributor> - <contributor> - <name>Sam Brannen</name> - <roles> - <role>Contributed to the original provider implementation</role> - </roles> - </contributor> - <contributor> - <name>Stefan Bechtold</name> - <roles> - <role>Contributed to the original provider implementation</role> - </roles> - </contributor> - <contributor> - <name>Marc Philipp</name> - <roles> - <role>Contributed to the original provider implementation</role> - </roles> - </contributor> - <contributor> - <name>Matthias Merdes</name> - <roles> - <role>Contributed to the original provider implementation</role> - </roles> - </contributor> - <contributor> - <name>Johannes Link</name> - <roles> - <role>Contributed to the original provider implementation</role> - </roles> - </contributor> - </contributors> -</project> http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java deleted file mode 100644 index 7f58921..0000000 --- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java +++ /dev/null @@ -1,202 +0,0 @@ -package org.apache.maven.surefire.junitplatform; - -/* - * 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. - */ - -import org.apache.maven.surefire.providerapi.AbstractProvider; -import org.apache.maven.surefire.providerapi.ProviderParameters; -import org.apache.maven.surefire.report.ReporterException; -import org.apache.maven.surefire.report.ReporterFactory; -import org.apache.maven.surefire.report.RunListener; -import org.apache.maven.surefire.report.SimpleReportEntry; -import org.apache.maven.surefire.suite.RunResult; -import org.apache.maven.surefire.testset.TestSetFailedException; -import org.apache.maven.surefire.util.TestsToRun; -import org.junit.platform.engine.Filter; -import org.junit.platform.launcher.Launcher; -import org.junit.platform.launcher.LauncherDiscoveryRequest; -import org.junit.platform.launcher.TagFilter; -import org.junit.platform.launcher.core.LauncherFactory; - -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.logging.Level; -import java.util.logging.Logger; - -import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass; -import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.request; - -/** - * @since 1.0 - */ -public class JUnitPlatformProvider - extends AbstractProvider -{ - - // Parameter names processed to determine which @Tags should be executed. - static final String EXCLUDE_GROUPS = "excludedGroups"; - - static final String EXCLUDE_TAGS = "excludeTags"; - - static final String INCLUDE_GROUPS = "groups"; - - static final String INCLUDE_TAGS = "includeTags"; - - static final String EXCEPTION_MESSAGE_BOTH_NOT_ALLOWED = "The " + INCLUDE_GROUPS + " and " + INCLUDE_TAGS - + " parameters (or the " + EXCLUDE_GROUPS + " and " + EXCLUDE_TAGS + " parameters) are synonyms - " - + "only one of each is allowed (though neither is required)."; - - private final ProviderParameters parameters; - - private final Launcher launcher; - - final Filter<?>[] includeAndExcludeFilters; - - public JUnitPlatformProvider( ProviderParameters parameters ) - { - this( parameters, LauncherFactory.create() ); - } - - JUnitPlatformProvider( ProviderParameters parameters, Launcher launcher ) - { - this.parameters = parameters; - this.launcher = launcher; - this.includeAndExcludeFilters = getIncludeAndExcludeFilters(); - Logger.getLogger( "org.junit" ).setLevel( Level.WARNING ); - } - - @Override - public Iterable<Class<?>> getSuites() - { - return scanClasspath(); - } - - @Override - public RunResult invoke( Object forkTestSet ) - throws TestSetFailedException, ReporterException, InvocationTargetException - { - if ( forkTestSet instanceof TestsToRun ) - { - return invokeAllTests( (TestsToRun) forkTestSet ); - } - else if ( forkTestSet instanceof Class ) - { - return invokeAllTests( TestsToRun.fromClass( (Class<?>) forkTestSet ) ); - } - else if ( forkTestSet == null ) - { - return invokeAllTests( scanClasspath() ); - } - else - { - throw new IllegalArgumentException( "Unexpected value of forkTestSet: " + forkTestSet ); - } - } - - private TestsToRun scanClasspath() - { - TestsToRun scannedClasses = parameters.getScanResult().applyFilter( - new TestPlanScannerFilter( launcher, includeAndExcludeFilters ), parameters.getTestClassLoader() ); - return parameters.getRunOrderCalculator().orderTestClasses( scannedClasses ); - } - - private RunResult invokeAllTests( TestsToRun testsToRun ) - { - RunResult runResult; - ReporterFactory reporterFactory = parameters.getReporterFactory(); - try - { - RunListener runListener = reporterFactory.createReporter(); - launcher.registerTestExecutionListeners( new RunListenerAdapter( runListener ) ); - - for ( Class<?> testClass : testsToRun ) - { - invokeSingleClass( testClass, runListener ); - } - } - finally - { - runResult = reporterFactory.close(); - } - return runResult; - } - - private void invokeSingleClass( Class<?> testClass, RunListener runListener ) - { - SimpleReportEntry classEntry = new SimpleReportEntry( getClass().getName(), testClass.getName() ); - runListener.testSetStarting( classEntry ); - - LauncherDiscoveryRequest discoveryRequest = request().selectors( selectClass( testClass ) ).filters( - includeAndExcludeFilters ).build(); - launcher.execute( discoveryRequest ); - - runListener.testSetCompleted( classEntry ); - } - - private Filter<?>[] getIncludeAndExcludeFilters() - { - List<Filter<?>> filters = new ArrayList<>(); - - Optional<List<String>> includes = getGroupsOrTags( getPropertiesList( INCLUDE_GROUPS ), - getPropertiesList( INCLUDE_TAGS ) ); - includes.map( TagFilter::includeTags ).ifPresent( filters::add ); - - Optional<List<String>> excludes = getGroupsOrTags( getPropertiesList( EXCLUDE_GROUPS ), - getPropertiesList( EXCLUDE_TAGS ) ); - excludes.map( TagFilter::excludeTags ).ifPresent( filters::add ); - - return filters.toArray( new Filter<?>[filters.size()] ); - } - - private Optional<List<String>> getPropertiesList( String key ) - { - List<String> compoundProperties = null; - String property = parameters.getProviderProperties().get( key ); - if ( property != null ) - { - compoundProperties = Arrays.asList( property.split( "[, ]+" ) ); - } - return Optional.ofNullable( compoundProperties ); - } - - private Optional<List<String>> getGroupsOrTags( Optional<List<String>> groups, Optional<List<String>> tags ) - { - Optional<List<String>> elements = Optional.empty(); - - if ( groups.isPresent() && tags.isPresent() ) - { - throw new IllegalStateException( EXCEPTION_MESSAGE_BOTH_NOT_ALLOWED ); - } - - if ( groups.isPresent() ) - { - elements = groups; - } - else if ( tags.isPresent() ) - { - elements = tags; - } - - return elements; - } - -} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java deleted file mode 100644 index 9191864..0000000 --- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java +++ /dev/null @@ -1,150 +0,0 @@ -package org.apache.maven.surefire.junitplatform; - -/* - * 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. - */ - -import static org.apache.maven.surefire.report.SimpleReportEntry.ignored; -import static org.junit.platform.engine.TestExecutionResult.Status.ABORTED; -import static org.junit.platform.engine.TestExecutionResult.Status.FAILED; - -import java.util.Optional; - -import org.apache.maven.surefire.report.PojoStackTraceWriter; -import org.apache.maven.surefire.report.RunListener; -import org.apache.maven.surefire.report.SimpleReportEntry; -import org.apache.maven.surefire.report.StackTraceWriter; -import org.junit.platform.engine.TestExecutionResult; -import org.junit.platform.engine.TestSource; -import org.junit.platform.engine.support.descriptor.ClassSource; -import org.junit.platform.engine.support.descriptor.MethodSource; -import org.junit.platform.launcher.TestExecutionListener; -import org.junit.platform.launcher.TestIdentifier; -import org.junit.platform.launcher.TestPlan; - -/** - * @since 1.0 - */ -final class RunListenerAdapter - implements TestExecutionListener -{ - - private final RunListener runListener; - - private Optional<TestPlan> testPlan = Optional.empty(); - - public RunListenerAdapter( RunListener runListener ) - { - this.runListener = runListener; - } - - @Override - public void testPlanExecutionStarted( TestPlan testPlan ) - { - this.testPlan = Optional.of( testPlan ); - } - - @Override - public void testPlanExecutionFinished( TestPlan testPlan ) - { - this.testPlan = Optional.empty(); - } - - @Override - public void executionStarted( TestIdentifier testIdentifier ) - { - if ( testIdentifier.isTest() ) - { - runListener.testStarting( createReportEntry( testIdentifier, Optional.empty() ) ); - } - } - - @Override - public void executionSkipped( TestIdentifier testIdentifier, String reason ) - { - String source = getClassName( testIdentifier ).orElseGet( () -> parentDisplayName( testIdentifier ) ); - runListener.testSkipped( ignored( source, testIdentifier.getDisplayName(), reason ) ); - } - - @Override - public void executionFinished( TestIdentifier testIdentifier, TestExecutionResult testExecutionResult ) - { - if ( testExecutionResult.getStatus() == ABORTED ) - { - runListener.testAssumptionFailure( createReportEntry( testIdentifier, - testExecutionResult.getThrowable() ) ); - } - else if ( testExecutionResult.getStatus() == FAILED ) - { - runListener.testFailed( createReportEntry( testIdentifier, testExecutionResult.getThrowable() ) ); - } - else if ( testIdentifier.isTest() ) - { - runListener.testSucceeded( createReportEntry( testIdentifier, Optional.empty() ) ); - } - } - - private SimpleReportEntry createReportEntry( TestIdentifier testIdentifier, Optional<Throwable> throwable ) - { - Optional<String> className = getClassName( testIdentifier ); - if ( className.isPresent() ) - { - StackTraceWriter traceWriter = new PojoStackTraceWriter( className.get(), - getMethodName( testIdentifier ).orElse( "" ), throwable.orElse( null ) ); - return new SimpleReportEntry( className.get(), testIdentifier.getDisplayName(), traceWriter, - (Integer) null ); - } - else - { - return new SimpleReportEntry( parentDisplayName( testIdentifier ), testIdentifier.getDisplayName(), - (Integer) null ); - } - } - - private Optional<String> getClassName( TestIdentifier testIdentifier ) - { - TestSource testSource = testIdentifier.getSource().orElse( null ); - if ( testSource instanceof ClassSource ) - { - return Optional.of( ( (ClassSource) testSource ).getJavaClass().getName() ); - } - if ( testSource instanceof MethodSource ) - { - return Optional.of( ( (MethodSource) testSource ).getClassName() ); - } - return Optional.empty(); - } - - private Optional<String> getMethodName( TestIdentifier testIdentifier ) - { - TestSource testSource = testIdentifier.getSource().orElse( null ); - if ( testSource instanceof MethodSource ) - { - return Optional.of( ( (MethodSource) testSource ).getMethodName() ); - } - return Optional.empty(); - } - - private String parentDisplayName( TestIdentifier testIdentifier ) - { - return testPlan - .flatMap( plan -> plan.getParent( testIdentifier ) ) - .map( TestIdentifier::getDisplayName ) - .orElseGet( testIdentifier::getUniqueId ); - } -} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java deleted file mode 100644 index 4a95d6e..0000000 --- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilter.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.apache.maven.surefire.junitplatform; - -/* - * 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. - */ - -import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass; -import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.request; - -import java.util.function.Predicate; - -import org.apache.maven.surefire.util.ScannerFilter; -import org.junit.platform.engine.Filter; -import org.junit.platform.launcher.Launcher; -import org.junit.platform.launcher.LauncherDiscoveryRequest; -import org.junit.platform.launcher.TestIdentifier; -import org.junit.platform.launcher.TestPlan; - -/** - * @since 1.0 - */ -final class TestPlanScannerFilter - implements ScannerFilter -{ - - private static final Predicate<TestIdentifier> HAS_TESTS = testIdentifier -> testIdentifier.isTest() - || testIdentifier.isContainer(); - - private final Launcher launcher; - - private final Filter<?>[] includeAndExcludeFilters; - - public TestPlanScannerFilter( Launcher launcher, Filter<?>[] includeAndExcludeFilters ) - { - this.launcher = launcher; - this.includeAndExcludeFilters = includeAndExcludeFilters; - } - - @Override - @SuppressWarnings( "rawtypes" ) - public boolean accept( Class testClass ) - { - LauncherDiscoveryRequest discoveryRequest = request().selectors( selectClass( testClass ) ).filters( - includeAndExcludeFilters ).build(); - TestPlan testPlan = launcher.discover( discoveryRequest ); - return testPlan.countTestIdentifiers( HAS_TESTS ) > 0; - } - -} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider b/surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider deleted file mode 100644 index dbe73cf..0000000 --- a/surefire-providers/surefire-junit-platform/src/main/resources/META-INF/services/org.apache.maven.surefire.providerapi.SurefireProvider +++ /dev/null @@ -1 +0,0 @@ -org.apache.maven.surefire.junitplatform.JUnitPlatformProvider http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTests.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTests.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTests.java deleted file mode 100644 index a32aade..0000000 --- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTests.java +++ /dev/null @@ -1,325 +0,0 @@ -package org.apache.maven.surefire.junitplatform; - -/* - * 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. - */ - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assumptions.assumeTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; - -import org.apache.maven.surefire.providerapi.ProviderParameters; -import org.apache.maven.surefire.report.ReporterFactory; -import org.apache.maven.surefire.report.RunListener; -import org.apache.maven.surefire.util.RunOrderCalculator; -import org.apache.maven.surefire.util.ScanResult; -import org.apache.maven.surefire.util.TestsToRun; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.junit.platform.commons.util.PreconditionViolationException; -import org.junit.platform.launcher.Launcher; -import org.junit.platform.launcher.TestPlan; -import org.junit.platform.launcher.core.LauncherFactory; -import org.junit.platform.launcher.listeners.SummaryGeneratingListener; -import org.junit.platform.launcher.listeners.TestExecutionSummary; - -/** - * Unit tests for {@link JUnitPlatformProvider}. - * - * @since 1.0 - */ -class JUnitPlatformProviderTests -{ - - @Test - void getSuitesReturnsScannedClasses() - throws Exception - { - ProviderParameters providerParameters = providerParametersMock( TestClass1.class, TestClass2.class ); - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParameters ); - - assertThat( provider.getSuites() ).containsOnly( TestClass1.class, TestClass2.class ); - } - - @Test - void invokeThrowsForWrongForkTestSet() - throws Exception - { - ProviderParameters providerParameters = providerParametersMock( Integer.class ); - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParameters ); - - assertThrows( IllegalArgumentException.class, () -> provider.invoke( "wrong forkTestSet" ) ); - } - - @Test - void allGivenTestsToRunAreInvoked() - throws Exception - { - Launcher launcher = LauncherFactory.create(); - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock(), launcher ); - - TestPlanSummaryListener executionListener = new TestPlanSummaryListener(); - launcher.registerTestExecutionListeners( executionListener ); - - TestsToRun testsToRun = newTestsToRun( TestClass1.class, TestClass2.class ); - provider.invoke( testsToRun ); - - assertThat( executionListener.summaries ).hasSize( 2 ); - TestClass1.verifyExecutionSummary( executionListener.summaries.get( 0 ) ); - TestClass2.verifyExecutionSummary( executionListener.summaries.get( 1 ) ); - } - - @Test - void singleTestClassIsInvoked() - throws Exception - { - Launcher launcher = LauncherFactory.create(); - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock(), launcher ); - - TestPlanSummaryListener executionListener = new TestPlanSummaryListener(); - launcher.registerTestExecutionListeners( executionListener ); - - provider.invoke( TestClass1.class ); - - assertThat( executionListener.summaries ).hasSize( 1 ); - TestClass1.verifyExecutionSummary( executionListener.summaries.get( 0 ) ); - } - - @Test - void allDiscoveredTestsAreInvokedForNullArgument() - throws Exception - { - ProviderParameters providerParameters = providerParametersMock( TestClass1.class, TestClass2.class ); - Launcher launcher = LauncherFactory.create(); - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParameters, launcher ); - - TestPlanSummaryListener executionListener = new TestPlanSummaryListener(); - launcher.registerTestExecutionListeners( executionListener ); - - provider.invoke( null ); - - assertThat( executionListener.summaries ).hasSize( 2 ); - TestClass1.verifyExecutionSummary( executionListener.summaries.get( 0 ) ); - TestClass2.verifyExecutionSummary( executionListener.summaries.get( 1 ) ); - } - - @Test - void bothGroupsAndIncludeTagsThrowsException() - { - Map<String, String> properties = new HashMap<>(); - properties.put( JUnitPlatformProvider.INCLUDE_GROUPS, "groupOne, groupTwo" ); - properties.put( JUnitPlatformProvider.INCLUDE_TAGS, "tagOne, tagTwo" ); - verifyPreconditionViolationException( properties ); - } - - @Test - void bothExcludedGroupsAndExcludeTagsThrowsException() { - Map<String, String> properties = new HashMap<>(); - properties.put(JUnitPlatformProvider.EXCLUDE_GROUPS, "groupOne, groupTwo"); - properties.put(JUnitPlatformProvider.EXCLUDE_TAGS, "tagOne, tagTwo"); - verifyPreconditionViolationException(properties); - } - - @Test - void onlyGroupsIsDeclared() - throws Exception - { - Map<String, String> properties = new HashMap<>(); - properties.put( JUnitPlatformProvider.INCLUDE_GROUPS, "groupOne, groupTwo" ); - - ProviderParameters providerParameters = providerParametersMock( TestClass1.class ); - when( providerParameters.getProviderProperties() ).thenReturn( properties ); - - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParameters ); - - assertEquals( 1, provider.includeAndExcludeFilters.length ); - } - - @Test - void onlyExcludeTagsIsDeclared() - throws Exception - { - Map<String, String> properties = new HashMap<>(); - properties.put( JUnitPlatformProvider.EXCLUDE_TAGS, "tagOne, tagTwo" ); - - ProviderParameters providerParameters = providerParametersMock( TestClass1.class ); - when( providerParameters.getProviderProperties() ).thenReturn( properties ); - - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParameters ); - - assertEquals( 1, provider.includeAndExcludeFilters.length ); - } - - @Test - void bothIncludeAndExcludeAreAllowed() - throws Exception - { - Map<String, String> properties = new HashMap<>(); - properties.put( JUnitPlatformProvider.INCLUDE_TAGS, "tagOne, tagTwo" ); - properties.put( JUnitPlatformProvider.EXCLUDE_TAGS, "tagThree, tagFour" ); - - ProviderParameters providerParameters = providerParametersMock( TestClass1.class ); - when( providerParameters.getProviderProperties() ).thenReturn( properties ); - - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParameters ); - - assertEquals( 2, provider.includeAndExcludeFilters.length ); - } - - @Test - void noFiltersAreCreatedIfNoPropertiesAreDeclared() - throws Exception - { - ProviderParameters providerParameters = providerParametersMock( TestClass1.class ); - - JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParameters ); - - assertEquals( 0, provider.includeAndExcludeFilters.length ); - } - - private void verifyPreconditionViolationException( Map<String, String> properties ) - { - ProviderParameters providerParameters = providerParametersMock( TestClass1.class ); - when( providerParameters.getProviderProperties() ).thenReturn( properties ); - - Throwable throwable = assertThrows( PreconditionViolationException.class, () -> - new JUnitPlatformProvider(providerParameters) ); - - assertEquals( JUnitPlatformProvider.EXCEPTION_MESSAGE_BOTH_NOT_ALLOWED, throwable.getMessage() ); - } - - private static ProviderParameters providerParametersMock( Class<?>... testClasses ) - { - TestsToRun testsToRun = newTestsToRun( testClasses ); - - ScanResult scanResult = mock( ScanResult.class ); - when( scanResult.applyFilter( any(), any() ) ).thenReturn( testsToRun ); - - RunOrderCalculator runOrderCalculator = mock( RunOrderCalculator.class ); - when( runOrderCalculator.orderTestClasses( any() ) ).thenReturn( testsToRun ); - - ReporterFactory reporterFactory = mock( ReporterFactory.class ); - RunListener runListener = mock( RunListener.class ); - when( reporterFactory.createReporter() ).thenReturn( runListener ); - - ProviderParameters providerParameters = mock( ProviderParameters.class ); - when( providerParameters.getScanResult() ).thenReturn( scanResult ); - when( providerParameters.getRunOrderCalculator() ).thenReturn( runOrderCalculator ); - when( providerParameters.getReporterFactory() ).thenReturn( reporterFactory ); - - return providerParameters; - } - - private static TestsToRun newTestsToRun( Class<?>... testClasses ) - { - List<Class<?>> classesList = Arrays.asList( testClasses ); - return new TestsToRun( new LinkedHashSet<>( classesList ) ); - } - - private class TestPlanSummaryListener - extends SummaryGeneratingListener - { - - final List<TestExecutionSummary> summaries = new ArrayList<>(); - - @Override - public void testPlanExecutionFinished( TestPlan testPlan ) - { - super.testPlanExecutionFinished( testPlan ); - summaries.add( getSummary() ); - } - } - - private static class TestClass1 - { - - @Test - void test1() - { - } - - @Test - void test2() - { - } - - @Disabled - @Test - void test3() - { - } - - @Test - void test4() - { - throw new RuntimeException(); - } - - static void verifyExecutionSummary( TestExecutionSummary summary ) - { - assertEquals( 4, summary.getTestsFoundCount() ); - assertEquals( 3, summary.getTestsStartedCount() ); - assertEquals( 2, summary.getTestsSucceededCount() ); - assertEquals( 1, summary.getTestsSkippedCount() ); - assertEquals( 0, summary.getTestsAbortedCount() ); - assertEquals( 1, summary.getTestsFailedCount() ); - } - } - - private static class TestClass2 - { - - @Test - void test1() - { - } - - @Test - void test2() - { - throw new RuntimeException(); - } - - @Test - void test3() - { - assumeTrue( false ); - } - - static void verifyExecutionSummary( TestExecutionSummary summary ) - { - assertEquals( 3, summary.getTestsFoundCount() ); - assertEquals( 3, summary.getTestsStartedCount() ); - assertEquals( 1, summary.getTestsSucceededCount() ); - assertEquals( 0, summary.getTestsSkippedCount() ); - assertEquals( 1, summary.getTestsAbortedCount() ); - assertEquals( 1, summary.getTestsFailedCount() ); - } - } -} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTests.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTests.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTests.java deleted file mode 100644 index d05604c..0000000 --- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTests.java +++ /dev/null @@ -1,262 +0,0 @@ -package org.apache.maven.surefire.junitplatform; - -/* - * 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. - */ - -import static java.util.Collections.singletonList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.Optional; - -import org.apache.maven.surefire.report.ReportEntry; -import org.apache.maven.surefire.report.RunListener; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.engine.descriptor.ClassTestDescriptor; -import org.junit.jupiter.engine.descriptor.MethodTestDescriptor; -import org.junit.platform.engine.TestDescriptor; -import org.junit.platform.engine.TestExecutionResult; -import org.junit.platform.engine.UniqueId; -import org.junit.platform.engine.support.descriptor.EngineDescriptor; -import org.junit.platform.launcher.TestIdentifier; -import org.junit.platform.launcher.TestPlan; -import org.mockito.ArgumentCaptor; - -/** - * Unit tests for {@link RunListenerAdapter}. - * - * @since 1.0 - */ -class RunListenerAdapterTests -{ - - private RunListener listener; - - private RunListenerAdapter adapter; - - @BeforeEach - public void setUp() - { - listener = mock( RunListener.class ); - adapter = new RunListenerAdapter( listener ); - } - - @Test - void notifiedWithCorrectNamesWhenMethodExecutionStarted() - throws Exception - { - ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); - - adapter.executionStarted( newMethodIdentifier() ); - verify( listener ).testStarting( entryCaptor.capture() ); - - ReportEntry entry = entryCaptor.getValue(); - assertEquals( MY_TEST_METHOD_NAME + "()", entry.getName() ); - assertEquals( MyTestClass.class.getName(), entry.getSourceName() ); - assertNotNull( entry.getStackTraceWriter() ); - } - - @Test - void notNotifiedWhenClassExecutionStarted() - throws Exception - { - adapter.executionStarted( newClassIdentifier() ); - verify( listener, never() ).testStarting( any() ); - } - - @Test - void notNotifiedWhenEngineExecutionStarted() - throws Exception - { - adapter.executionStarted( newEngineIdentifier() ); - verify( listener, never() ).testStarting( any() ); - } - - @Test - void notifiedWhenMethodExecutionSkipped() - throws Exception - { - adapter.executionSkipped( newMethodIdentifier(), "test" ); - verify( listener ).testSkipped( any() ); - } - - @Test - void notifiedWithCorrectNamesWhenClassExecutionSkipped() - throws Exception - { - ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); - - adapter.executionSkipped( newClassIdentifier(), "test" ); - verify( listener ).testSkipped( entryCaptor.capture() ); - - ReportEntry entry = entryCaptor.getValue(); - assertTrue( MyTestClass.class.getTypeName().contains( entry.getName() ) ); - assertEquals( MyTestClass.class.getName(), entry.getSourceName() ); - } - - @Test - void notifiedWhenEngineExecutionSkipped() - throws Exception - { - adapter.executionSkipped( newEngineIdentifier(), "test" ); - verify( listener ).testSkipped( any() ); - } - - @Test - void notifiedWhenMethodExecutionAborted() - throws Exception - { - adapter.executionFinished( newMethodIdentifier(), TestExecutionResult.aborted( null ) ); - verify( listener ).testAssumptionFailure( any() ); - } - - @Test - void notifiedWhenClassExecutionAborted() - throws Exception - { - adapter.executionFinished( newClassIdentifier(), TestExecutionResult.aborted( null ) ); - verify( listener ).testAssumptionFailure( any() ); - } - - @Test - void notifiedWhenMethodExecutionFailed() - throws Exception - { - adapter.executionFinished( newMethodIdentifier(), TestExecutionResult.failed( new RuntimeException() ) ); - verify( listener ).testFailed( any() ); - } - - @Test - void notifiedWithCorrectNamesWhenClassExecutionFailed() - throws Exception - { - ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); - - adapter.executionFinished( newClassIdentifier(), TestExecutionResult.failed( new RuntimeException() ) ); - verify( listener ).testFailed( entryCaptor.capture() ); - - ReportEntry entry = entryCaptor.getValue(); - assertEquals( MyTestClass.class.getName(), entry.getSourceName() ); - assertNotNull( entry.getStackTraceWriter() ); - } - - @Test - void notifiedWhenMethodExecutionSucceeded() - throws Exception - { - adapter.executionFinished( newMethodIdentifier(), TestExecutionResult.successful() ); - verify( listener ).testSucceeded( any() ); - } - - @Test - void notNotifiedWhenClassExecutionSucceeded() - throws Exception - { - adapter.executionFinished( newClassIdentifier(), TestExecutionResult.successful() ); - verify( listener, never() ).testSucceeded( any() ); - } - - @Test - void notifiedWithParentDisplayNameWhenTestClassUnknown() - throws Exception - { - // Set up a test plan - TestPlan plan = TestPlan.from( singletonList( new EngineDescriptor( newId(), "Luke's Plan" ) ) ); - adapter.testPlanExecutionStarted( plan ); - - // Use the test plan to set up child with parent. - final String parentDisplay = "I am your father"; - TestIdentifier child = newSourcelessIdentifierWithParent( plan, parentDisplay ); - adapter.executionStarted( child ); - - // Check that the adapter has informed Surefire that the test has been invoked, - // with the parent name as source (since the test case itself had no source). - ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class ); - verify( listener ).testStarting( entryCaptor.capture() ); - assertEquals( parentDisplay, entryCaptor.getValue().getSourceName() ); - } - - private static TestIdentifier newMethodIdentifier() - throws Exception - { - TestDescriptor testDescriptor = new MethodTestDescriptor( newId(), MyTestClass.class, - MyTestClass.class.getDeclaredMethod( MY_TEST_METHOD_NAME ) ); - return TestIdentifier.from( testDescriptor ); - } - - private static TestIdentifier newClassIdentifier() - { - TestDescriptor testDescriptor = new ClassTestDescriptor( newId(), MyTestClass.class ); - return TestIdentifier.from( testDescriptor ); - } - - private static TestIdentifier newSourcelessIdentifierWithParent( TestPlan testPlan, String parentDisplay ) - { - // A parent test identifier with a name. - TestDescriptor parent = mock( TestDescriptor.class ); - when( parent.getUniqueId() ).thenReturn( newId() ); - when( parent.getDisplayName() ).thenReturn( parentDisplay ); - TestIdentifier parentId = TestIdentifier.from( parent ); - - // The (child) test case that is to be executed as part of a test plan. - TestDescriptor child = mock( TestDescriptor.class ); - when( child.getUniqueId() ).thenReturn( newId() ); - when( child.isTest() ).thenReturn( true ); - - // Ensure the child source is null yet that there is a parent -- the special case to be tested. - when( child.getSource() ).thenReturn( Optional.empty() ); - when( child.getParent() ).thenReturn( Optional.of(parent) ); - TestIdentifier childId = TestIdentifier.from( child ); - - testPlan.add( childId ); - testPlan.add( parentId ); - - return childId; - } - - private static TestIdentifier newEngineIdentifier() - { - TestDescriptor testDescriptor = new EngineDescriptor( newId(), "engine" ); - return TestIdentifier.from( testDescriptor ); - } - - private static UniqueId newId() - { - return UniqueId.forEngine( "engine" ); - } - - private static final String MY_TEST_METHOD_NAME = "myTestMethod"; - - private static class MyTestClass { - - @Test - void myTestMethod() - { - } - - } - -} http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/6636b069/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilterTests.java ---------------------------------------------------------------------- diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilterTests.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilterTests.java deleted file mode 100644 index 98f5b2b..0000000 --- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/TestPlanScannerFilterTests.java +++ /dev/null @@ -1,190 +0,0 @@ -package org.apache.maven.surefire.junitplatform; - -/* - * 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. - */ - -import static java.util.Collections.emptyList; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.util.List; -import java.util.stream.Stream; - -import org.junit.jupiter.api.DynamicTest; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestFactory; -import org.junit.platform.engine.Filter; -import org.junit.platform.launcher.core.LauncherFactory; - -/** - * Unit tests for {@link TestPlanScannerFilter}. - * - * @since 1.0 - */ -public class TestPlanScannerFilterTests -{ - - @Test - void emptyClassAccepted() - { - assertTrue( newFilter().accept( EmptyClass.class ), "accepts empty class because it is a container" ); - } - - @Test - void classWithNoTestMethodsIsAccepted() - { - assertTrue( newFilter().accept( ClassWithMethods.class ), - "accepts class with no @Test methods because it is a container" ); - } - - @Test - void classWithTestMethodsIsAccepted() - { - assertTrue( newFilter().accept( ClassWithTestMethods.class ) ); - } - - @Test - void classWithNestedTestClassIsAccepted() - { - assertTrue( newFilter().accept( ClassWithNestedTestClass.class ) ); - } - - @Test - void classWithDeeplyNestedTestClassIsAccepted() - { - assertTrue( newFilter().accept( ClassWithDeeplyNestedTestClass.class ) ); - } - - @Test - void classWithTestFactoryIsAccepted() - { - assertTrue( newFilter().accept( ClassWithTestFactory.class ) ); - } - - @Test - void classWithNestedTestFactoryIsAccepted() - { - assertTrue( newFilter().accept( ClassWithNestedTestFactory.class ) ); - } - - private TestPlanScannerFilter newFilter() - { - return new TestPlanScannerFilter( LauncherFactory.create(), new Filter<?>[0] ); - } - - private static class EmptyClass - { - } - - @SuppressWarnings("unused") - private static class ClassWithMethods - { - - void method1() - { - } - - void method2() - { - } - } - - private static class ClassWithTestMethods - { - - @Test - void test1() - { - } - - @Test - public void test2() - { - } - } - - private static class ClassWithNestedTestClass - { - - @SuppressWarnings("unused") - void method() - { - } - - @Nested - class TestClass - { - - @Test - void test1() - { - } - } - } - - private static class ClassWithDeeplyNestedTestClass - { - - @Nested - class Level1 - { - - @Nested - class Level2 - { - - @Nested - class TestClass - { - - @Test - void test1() - { - } - } - } - } - } - - private static class ClassWithTestFactory - { - - @TestFactory - Stream<DynamicTest> tests() - { - return Stream.empty(); - } - } - - private static class ClassWithNestedTestFactory - { - - @Nested - class TestClass - { - - @TestFactory - List<DynamicTest> tests() - { - return emptyList(); - } - } - } - -}