This is an automated email from the ASF dual-hosted git repository. tibordigana pushed a commit to branch inc-exc-files in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit 9c7c0d7b0bc5956ab59e95a16a21eadaf9040a66 Author: tibordigana <[email protected]> AuthorDate: Wed Mar 2 14:50:12 2022 +0100 unit tests --- .../plugin/surefire/AbstractSurefireMojoTest.java | 105 ++++++++++++++++++++- 1 file changed, 100 insertions(+), 5 deletions(-) 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 b1afb7f..954dc8c 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 @@ -30,14 +30,17 @@ import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; +import org.apache.commons.io.FileUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.DefaultArtifactHandler; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; @@ -84,6 +87,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import static java.io.File.separatorChar; +import static java.nio.charset.StandardCharsets.UTF_8; import static java.nio.file.Files.write; import static java.util.Arrays.asList; import static java.util.Collections.emptyList; @@ -95,8 +99,8 @@ import static org.apache.maven.artifact.versioning.VersionRange.createFromVersio import static org.apache.maven.surefire.shared.lang3.JavaVersion.JAVA_9; import static org.apache.maven.surefire.shared.lang3.JavaVersion.JAVA_RECENT; import static org.apache.maven.surefire.shared.lang3.SystemUtils.IS_OS_WINDOWS; -import static org.codehaus.plexus.languages.java.jpms.ModuleNameSource.MODULEDESCRIPTOR; import static org.assertj.core.api.Assertions.assertThat; +import static org.codehaus.plexus.languages.java.jpms.ModuleNameSource.MODULEDESCRIPTOR; import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; @@ -1990,6 +1994,11 @@ public class AbstractSurefireMojoTest private int failOnFlakeCount; private String[] includeJUnit5Engines; private String[] excludeJUnit5Engines; + private List<Artifact> projectTestArtifacts; + private File includesFile; + private File excludesFile; + private List<String> includes; + private List<String> excludes; private JUnitPlatformProviderInfo createJUnitPlatformProviderInfo( Artifact junitPlatformArtifact, TestClassPath testClasspathWrapper ) @@ -1997,6 +2006,17 @@ public class AbstractSurefireMojoTest return new JUnitPlatformProviderInfo( junitPlatformArtifact, testClasspathWrapper ); } + void setProjectTestArtifacts( List<Artifact> projectTestArtifacts ) + { + this.projectTestArtifacts = projectTestArtifacts; + } + + @Override + List<Artifact> getProjectTestArtifacts() + { + return projectTestArtifacts; + } + @Override protected void logDebugOrCliShowErrors( String s ) { @@ -2126,19 +2146,24 @@ public class AbstractSurefireMojoTest @Override public List<String> getIncludes() { - return null; + return includes; + } + + void setIncludesFile( File includesFile ) + { + this.includesFile = includesFile; } @Override public File getIncludesFile() { - return null; + return includesFile; } @Override public void setIncludes( List<String> includes ) { - + this.includes = includes; } @Override @@ -2297,10 +2322,15 @@ public class AbstractSurefireMojoTest return null; } + void setExcludesFile( File excludesFile ) + { + this.excludesFile = excludesFile; + } + @Override public File getExcludesFile() { - return null; + return excludesFile; } @Override @@ -2471,6 +2501,71 @@ public class AbstractSurefireMojoTest } } + @Test + public void shouldNotPerformMethodFilteringOnIncludes() throws Exception + { + Mojo plugin = new Mojo(); + + File includesExcludes = File.createTempFile( "surefire", "-includes" ); + FileUtils.write( includesExcludes, "AnotherTest#method" , UTF_8 ); + plugin.setIncludesFile( includesExcludes ); + + List<String> includes = new LinkedList<>(); + includes.add( "AnotherTest#method " ); + plugin.setIncludes( includes ); + + VersionRange version = VersionRange.createFromVersion( "1.0" ); + ArtifactHandler handler = new DefaultArtifactHandler(); + Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "jar", null, handler ); + File artifactFile = File.createTempFile( "surefire", ".jar" ); + artifactFile.deleteOnExit(); + testDeps.setFile( artifactFile ); + plugin.setProjectTestArtifacts( singletonList( testDeps ) ); + plugin.setDependenciesToScan( new String[] { "g:a" } ); + + try + { + plugin.scanDependencies(); + fail( "MojoFailureException expected" ); + } + catch ( MojoFailureException e ) + { + assertThat( e.getLocalizedMessage() ) + .isEqualTo( "Method filter prohibited in includes|excludes parameter: AnotherTest#method " ); + } + } + + @Test + public void shouldPerformMethodFilteringOnIncludesExcludesFile() throws Exception + { + Mojo plugin = new Mojo(); + + plugin.setLogger( mock( Logger.class ) ); + + File includesExcludes = File.createTempFile( "surefire", "-includes" ); + FileUtils.write( includesExcludes, "AnotherTest#method" , UTF_8 ); + plugin.setIncludesFile( includesExcludes ); + plugin.setExcludesFile( includesExcludes ); + + VersionRange version = VersionRange.createFromVersion( "1.0" ); + ArtifactHandler handler = new DefaultArtifactHandler(); + Artifact testDeps = new DefaultArtifact( "g", "a", version, "compile", "test-jar", null, handler ); + File artifactFile = File.createTempFile( "surefire", "-classes" ); + String classDir = artifactFile.getCanonicalPath(); + assertThat( artifactFile.delete() ).isTrue(); + File classes = new File( classDir ); + assertThat( classes.mkdir() ).isTrue(); + testDeps.setFile( classes ); + assertThat( new File( classes, "AnotherTest.class" ).createNewFile() ) + .isTrue(); + plugin.setProjectTestArtifacts( singletonList( testDeps ) ); + plugin.setDependenciesToScan( new String[] { "g:a" } ); + + DefaultScanResult result = plugin.scanDependencies(); + assertThat ( result.getClasses() ).hasSize( 1 ); + assertThat ( result.getClasses().iterator().next() ).isEqualTo( "AnotherTest" ); + } + private static File mockFile( String absolutePath ) { File f = mock( File.class );
