From 2c11d0251683963ba12c9e3f643084e35e766a8e Mon Sep 17 00:00:00 2001 From: Andrzej Jarmoniuk Date: Fri, 16 Sep 2022 14:21:01 +0200 Subject: [PATCH] Fixed #676: Removing BaseMojoTestCase -- not needed --- .../codehaus/mojo/versions/SetMojoTest.java | 14 +- .../mojo/versions/SetPropertyMojoTest.java | 77 +++++++--- .../mojo/versions/UseDepVersionMojoTest.java | 15 +- .../mojo/versions/utils/BaseMojoTestCase.java | 137 ------------------ .../set-property/null-new-version/pom.xml | 32 ++++ .../set-property/{ => null-property}/pom.xml | 3 +- .../codehaus/mojo/set/versionless-01/pom.xml | 5 +- .../{issue-637-pom.xml => issue-637/pom.xml} | 3 +- 8 files changed, 119 insertions(+), 167 deletions(-) delete mode 100644 src/test/java/org/codehaus/mojo/versions/utils/BaseMojoTestCase.java create mode 100644 src/test/resources/org/codehaus/mojo/set-property/null-new-version/pom.xml rename src/test/resources/org/codehaus/mojo/set-property/{ => null-property}/pom.xml (93%) rename src/test/resources/org/codehaus/mojo/use-dep-version/{issue-637-pom.xml => issue-637/pom.xml} (93%) diff --git a/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java b/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java index fb674768a..a9b8916b4 100644 --- a/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java +++ b/src/test/java/org/codehaus/mojo/versions/SetMojoTest.java @@ -1,18 +1,25 @@ package org.codehaus.mojo.versions; +import java.io.File; + import org.apache.maven.model.Model; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugin.testing.AbstractMojoTestCase; +import org.apache.maven.plugin.testing.MojoRule; import org.apache.maven.project.MavenProject; -import org.codehaus.mojo.versions.utils.BaseMojoTestCase; +import org.junit.Rule; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; -public class SetMojoTest extends BaseMojoTestCase +public class SetMojoTest extends AbstractMojoTestCase { + @Rule + MojoRule mojoRule = new MojoRule( this ); + @Test public void testGetIncrementedVersion() throws MojoExecutionException { @@ -95,7 +102,8 @@ public void testNextSnapshotIndexWithoutNextSnapshot() throws MojoFailureExcepti @Test public void testVersionlessDependency() throws Exception { - SetMojo myMojo = createMojo( "set", "src/test/resources/org/codehaus/mojo/set/versionless-01/pom.xml" ); + SetMojo myMojo = (SetMojo) mojoRule.lookupConfiguredMojo( + new File( "target/test-classes/org/codehaus/mojo/set/versionless-01" ), "set" ); myMojo.execute(); } } diff --git a/src/test/java/org/codehaus/mojo/versions/SetPropertyMojoTest.java b/src/test/java/org/codehaus/mojo/versions/SetPropertyMojoTest.java index f96d35e4b..4f1ecf436 100644 --- a/src/test/java/org/codehaus/mojo/versions/SetPropertyMojoTest.java +++ b/src/test/java/org/codehaus/mojo/versions/SetPropertyMojoTest.java @@ -19,15 +19,25 @@ * under the License. */ +import java.io.File; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Objects; import org.apache.maven.plugin.MojoExecutionException; -import org.codehaus.mojo.versions.utils.BaseMojoTestCase; +import org.apache.maven.plugin.testing.AbstractMojoTestCase; +import org.apache.maven.plugin.testing.MojoRule; +import org.apache.maven.plugin.testing.stubs.StubArtifactRepository; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.matchesPattern; /** @@ -35,17 +45,45 @@ * * @author Andrzej Jarmoniuk */ -public class SetPropertyMojoTest extends BaseMojoTestCase +public class SetPropertyMojoTest extends AbstractMojoTestCase { - @Test + @Rule + MojoRule mojoRule = new MojoRule( this ); + + private Path pomDir; + + @Before + public void setUp() throws Exception + { + super.setUp(); + pomDir = Files.createTempDirectory( "set-property-" ); + } + + @After + public void tearDown() throws Exception + { + try + { + if ( pomDir != null && pomDir.toFile().exists() ) + { + Arrays.stream( Objects.requireNonNull( pomDir.toFile().listFiles() ) ).forEach( File::delete ); + pomDir.toFile().delete(); + } + } + finally + { + super.tearDown(); + } + } + @Test public void testNullNewVersion() throws Exception { - SetPropertyMojo mojo = createMojo( "set-property", - "target/test-classes/org/codehaus/mojo/set-property/pom.xml" ); - assertThat( mojo.getProject().getProperties(), is( mojo.getProject().getModel().getProperties() ) ); - - setVariableValueToObject( mojo, "property", "dummy-api-version" ); + Files.copy( Paths.get( "src/test/resources/org/codehaus/mojo/set-property/null-new-version/pom.xml" ), + Paths.get( pomDir.toString(), "pom.xml" ), REPLACE_EXISTING ); + SetPropertyMojo mojo = (SetPropertyMojo) mojoRule.lookupConfiguredMojo( pomDir.toFile(), + "set-property" ); + mojo.localRepository = new StubArtifactRepository( pomDir.toString() ); setVariableValueToObject( mojo, "newVersion", null ); mojo.execute(); @@ -60,11 +98,11 @@ public void testNullNewVersion() public void testNewVersionEmpty() throws Exception { - SetPropertyMojo mojo = createMojo( "set-property", - "target/test-classes/org/codehaus/mojo/set-property/pom.xml" ); - assertThat( mojo.getProject().getProperties(), is( mojo.getProject().getModel().getProperties() ) ); - - setVariableValueToObject( mojo, "property", "dummy-api-version" ); + Files.copy( Paths.get( "src/test/resources/org/codehaus/mojo/set-property/null-new-version/pom.xml" ), + Paths.get( pomDir.toString(), "pom.xml" ), REPLACE_EXISTING ); + SetPropertyMojo mojo = (SetPropertyMojo) mojoRule.lookupConfiguredMojo( pomDir.toFile(), + "set-property" ); + mojo.localRepository = new StubArtifactRepository( pomDir.toString() ); setVariableValueToObject( mojo, "newVersion", "" ); mojo.execute(); @@ -79,15 +117,14 @@ public void testNewVersionEmpty() public void testNullProperty() throws Exception { - SetPropertyMojo mojo = createMojo( "set-property", - "src/test/resources/org/codehaus/mojo/set-property/pom.xml" ); + Files.copy( Paths.get( "src/test/resources/org/codehaus/mojo/set-property/null-property/pom.xml" ), + Paths.get( pomDir.toString(), "pom.xml" ), REPLACE_EXISTING ); + SetPropertyMojo mojo = (SetPropertyMojo) mojoRule.lookupConfiguredMojo( pomDir.toFile(), + "set-property" ); - setVariableValueToObject( mojo, "property", null ); - setVariableValueToObject( mojo, "propertiesVersionsFile", null ); - setVariableValueToObject( mojo, "newVersion", "2.0.0" ); try { - mojo.execute(); + mojo.update( null ); fail(); } catch ( MojoExecutionException e ) diff --git a/src/test/java/org/codehaus/mojo/versions/UseDepVersionMojoTest.java b/src/test/java/org/codehaus/mojo/versions/UseDepVersionMojoTest.java index be965fd48..d00e6ced5 100644 --- a/src/test/java/org/codehaus/mojo/versions/UseDepVersionMojoTest.java +++ b/src/test/java/org/codehaus/mojo/versions/UseDepVersionMojoTest.java @@ -19,9 +19,12 @@ * under the License. */ +import java.io.File; import java.util.Collections; -import org.codehaus.mojo.versions.utils.BaseMojoTestCase; +import org.apache.maven.plugin.testing.AbstractMojoTestCase; +import org.apache.maven.plugin.testing.MojoRule; +import org.junit.Rule; import org.junit.Test; /** @@ -29,13 +32,17 @@ * * @author Andrzej Jarmoniuk */ -public class UseDepVersionMojoTest extends BaseMojoTestCase +public class UseDepVersionMojoTest extends AbstractMojoTestCase { + @Rule + MojoRule mojoRule = new MojoRule( this ); + @Test public void testIssue673() throws Exception { - UseDepVersionMojo mojo = createMojo( "use-dep-version", - "src/test/resources/org/codehaus/mojo/use-dep-version/issue-637-pom.xml" ); + UseDepVersionMojo mojo = (UseDepVersionMojo) mojoRule.lookupConfiguredMojo( + new File( "target/test-classes/org/codehaus/mojo/use-dep-version/issue-637" ), + "use-dep-version" ); setVariableValueToObject( mojo, "processDependencies", true ); setVariableValueToObject( mojo, "processDependencyManagement", true ); setVariableValueToObject( mojo, "excludeReactor", true ); diff --git a/src/test/java/org/codehaus/mojo/versions/utils/BaseMojoTestCase.java b/src/test/java/org/codehaus/mojo/versions/utils/BaseMojoTestCase.java deleted file mode 100644 index 1bdb484d5..000000000 --- a/src/test/java/org/codehaus/mojo/versions/utils/BaseMojoTestCase.java +++ /dev/null @@ -1,137 +0,0 @@ -package org.codehaus.mojo.versions.utils; - -import java.io.File; -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Properties; - -import org.apache.maven.model.Build; -import org.apache.maven.model.Dependency; -import org.apache.maven.model.DependencyManagement; -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.Mojo; -import org.apache.maven.plugin.testing.AbstractMojoTestCase; -import org.apache.maven.plugin.testing.stubs.MavenProjectStub; -import org.codehaus.plexus.util.ReaderFactory; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; - -/* - * 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. - */ - -/** - *

Extension of the {@link AbstractMojoTestCase} class, providing support - * for loading projects specified by POM file path (instead of - * using stubs with implementation hint).

- * - *

Example usage:

- * - *
- *     // provide the path to the POM containing the tested project
- *     SetMojo myMojo = createMojo( "set", "src/test/resources/org/codehaus/mojo/set/versionless-01/pom.xml" );
- *     assertNotNull( myMojo );
- *     myMojo.execute();
- * 
- * @author Andrzej Jarmoniuk - */ -public abstract class BaseMojoTestCase extends AbstractMojoTestCase -{ - /** - * Lookup the mojo leveraging the actual subprojects pom - * and injects the project using the given pom file path. - * - * @param target Mojo subclass - * @param goal to execute on the plugin - * @param pomFilePath path to the pom project to inject - * @return a Mojo instance - * @throws Exception thrown if mojo lookup fails - */ - @SuppressWarnings( "unchecked" ) - protected T createMojo( String goal, String pomFilePath ) throws Exception - { - File pomFile = new File( pomFilePath ); - T mojo = (T) lookupMojo( goal, pomFile ); - setVariableValueToObject( mojo, "project", new TestProjectStub( pomFile ) ); - return mojo; - } - - private static class TestProjectStub extends MavenProjectStub - { - private final File pomFile; - - /** - * Default constructor - */ - private TestProjectStub( File pomFile ) throws IOException, XmlPullParserException - { - this.pomFile = pomFile; - MavenXpp3Reader pomReader = new MavenXpp3Reader(); - Model model = pomReader.read( ReaderFactory.newXmlReader( pomFile ) ); - model.setPomFile( pomFile ); - - setModel( model ); - setOriginalModel( model.clone() ); - setGroupId( model.getGroupId() ); - setArtifactId( model.getArtifactId() ); - setVersion( model.getVersion() ); - setName( model.getName() ); - setUrl( model.getUrl() ); - setPackaging( model.getPackaging() ); - setFile( model.getPomFile() ); - - setBuild( new Build() - {{ - setFinalName( model.getArtifactId() ); - setDirectory( getBasedir() + "/target" ); - setSourceDirectory( getBasedir() + "/src/main/java" ); - setOutputDirectory( getBasedir() + "/target/classes" ); - setTestSourceDirectory( getBasedir() + "/src/test/java" ); - setTestOutputDirectory( getBasedir() + "/target/test-classes" ); - }} ); - - setCompileSourceRoots( Collections.singletonList( getBasedir() + "/src/main/java" ) ); - setTestCompileSourceRoots( Collections.singletonList( getBasedir() + "/src/test/java" ) ); - } - - @Override - public File getBasedir() - { - return pomFile.getParentFile(); - } - - @Override - public Properties getProperties() - { - return getModel().getProperties(); - } - - @Override - public List getDependencies() - { - return getModel().getDependencies(); - } - - @Override - public DependencyManagement getDependencyManagement() - { - return getModel().getDependencyManagement(); - } - } -} diff --git a/src/test/resources/org/codehaus/mojo/set-property/null-new-version/pom.xml b/src/test/resources/org/codehaus/mojo/set-property/null-new-version/pom.xml new file mode 100644 index 000000000..b8fe197bb --- /dev/null +++ b/src/test/resources/org/codehaus/mojo/set-property/null-new-version/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + default-group + default-artifact + 1.0 + pom + + + 1.0.0 + + + + + localhost + dummy-api + ${dummy-api-version} + + + + + + + org.codehaus.mojo + versions-maven-plugin + + dummy-api-version + + + + + diff --git a/src/test/resources/org/codehaus/mojo/set-property/pom.xml b/src/test/resources/org/codehaus/mojo/set-property/null-property/pom.xml similarity index 93% rename from src/test/resources/org/codehaus/mojo/set-property/pom.xml rename to src/test/resources/org/codehaus/mojo/set-property/null-property/pom.xml index 303db45ef..b593863de 100644 --- a/src/test/resources/org/codehaus/mojo/set-property/pom.xml +++ b/src/test/resources/org/codehaus/mojo/set-property/null-property/pom.xml @@ -21,9 +21,10 @@ + org.codehaus.mojo versions-maven-plugin - \ No newline at end of file + diff --git a/src/test/resources/org/codehaus/mojo/set/versionless-01/pom.xml b/src/test/resources/org/codehaus/mojo/set/versionless-01/pom.xml index 22956c517..ff646d28b 100644 --- a/src/test/resources/org/codehaus/mojo/set/versionless-01/pom.xml +++ b/src/test/resources/org/codehaus/mojo/set/versionless-01/pom.xml @@ -26,9 +26,12 @@ + org.codehaus.mojo versions-maven-plugin + + set + - onchange dummy-api 2.0 diff --git a/src/test/resources/org/codehaus/mojo/use-dep-version/issue-637-pom.xml b/src/test/resources/org/codehaus/mojo/use-dep-version/issue-637/pom.xml similarity index 93% rename from src/test/resources/org/codehaus/mojo/use-dep-version/issue-637-pom.xml rename to src/test/resources/org/codehaus/mojo/use-dep-version/issue-637/pom.xml index 5f2edfe99..6d602a4b6 100644 --- a/src/test/resources/org/codehaus/mojo/use-dep-version/issue-637-pom.xml +++ b/src/test/resources/org/codehaus/mojo/use-dep-version/issue-637/pom.xml @@ -17,6 +17,7 @@ + org.codehaus.mojo versions-maven-plugin DEVELOP-SNAPSHOT @@ -26,4 +27,4 @@ - \ No newline at end of file +