diff --git a/src/test/java/org/apache/maven/plugins/dependency/TestPropertiesMojo.java b/src/test/java/org/apache/maven/plugins/dependency/TestPropertiesMojo.java index 2e3db085f..3b9037f99 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/TestPropertiesMojo.java +++ b/src/test/java/org/apache/maven/plugins/dependency/TestPropertiesMojo.java @@ -18,63 +18,49 @@ */ package org.apache.maven.plugins.dependency; +import javax.inject.Inject; + import java.io.File; -import java.util.Set; +import java.util.Arrays; +import java.util.HashSet; +import org.apache.maven.api.plugin.testing.InjectMojo; +import org.apache.maven.api.plugin.testing.MojoExtension; +import org.apache.maven.api.plugin.testing.MojoTest; import org.apache.maven.artifact.Artifact; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugins.dependency.testUtils.stubs.DependencyProjectStub; import org.apache.maven.project.MavenProject; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; -public class TestPropertiesMojo extends AbstractDependencyMojoTestCase { - - @Override - protected String getTestDirectoryName() { - return "markers"; - } - - @Override - protected boolean shouldCreateFiles() { - return true; - } +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; - @Override - protected void setUp() throws Exception { - // required for mojo lookups to work - super.setUp(); +@MojoTest +public class TestPropertiesMojo { - MavenProject project = new DependencyProjectStub(); - getContainer().addComponent(project, MavenProject.class.getName()); + @Inject + private MavenProject project; - MavenSession session = newMavenSession(project); - getContainer().addComponent(session, MavenSession.class.getName()); - } + @Test + @InjectMojo(goal = "properties") + public void testSetProperties(PropertiesMojo mojo) throws Exception { - /** - * tests the proper discovery and configuration of the mojo - * - * @throws Exception in case of errors - */ - public void testSetProperties() throws Exception { - File testPom = new File(getBasedir(), "target/test-classes/unit/properties-test/plugin-config.xml"); - PropertiesMojo mojo = (PropertiesMojo) lookupMojo("properties", testPom); + Artifact artifact1 = Mockito.mock(Artifact.class); + Artifact artifact2 = Mockito.mock(Artifact.class); - assertNotNull(mojo); - MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project"); - assertNotNull(project); + when(artifact1.getDependencyConflictId()).thenReturn("group1:artifact1"); + when(artifact1.getFile()).thenReturn(new File(MojoExtension.getBasedir(), "artifact1.jar")); - Set artifacts = this.stubFactory.getScopedArtifacts(); - Set directArtifacts = this.stubFactory.getReleaseAndSnapshotArtifacts(); - artifacts.addAll(directArtifacts); + when(artifact2.getDependencyConflictId()).thenReturn("group2:artifact2"); + when(artifact2.getFile()).thenReturn(new File(MojoExtension.getBasedir(), "artifact2.jar")); - project.setArtifacts(artifacts); + when(artifact2.getVersion()).thenReturn("2.0.0"); + when(this.project.getArtifacts()).thenReturn(new HashSet<>(Arrays.asList(artifact1, artifact2))); mojo.execute(); - for (Artifact artifact : artifacts) { - File artifactFile = artifact.getFile(); - assertNotNull(artifact.getDependencyConflictId()); - assertTrue(artifactFile.isFile()); - } + // Verify that properties are set correctly + assertTrue(project.getProperties().getProperty("group1:artifact1").endsWith("artifact1.jar")); + assertTrue(project.getProperties().getProperty("group2:artifact2").endsWith("artifact2.jar")); } } diff --git a/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDepMgt.java b/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDepMgt.java index c27b2a7ea..674bcd15e 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDepMgt.java +++ b/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDepMgt.java @@ -36,11 +36,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; class TestAnalyzeDepMgt { diff --git a/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDuplicateMojo.java b/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDuplicateMojo.java index b0b758092..b09c56977 100644 --- a/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDuplicateMojo.java +++ b/src/test/java/org/apache/maven/plugins/dependency/analyze/TestAnalyzeDuplicateMojo.java @@ -18,214 +18,79 @@ */ package org.apache.maven.plugins.dependency.analyze; +import javax.inject.Inject; + import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import org.apache.maven.execution.MavenSession; +import org.apache.maven.api.di.Provides; +import org.apache.maven.api.plugin.testing.Basedir; +import org.apache.maven.api.plugin.testing.InjectMojo; +import org.apache.maven.api.plugin.testing.MojoExtension; +import org.apache.maven.api.plugin.testing.MojoTest; import org.apache.maven.plugin.logging.Log; -import org.apache.maven.plugins.dependency.AbstractDependencyMojoTestCase; -import org.apache.maven.plugins.dependency.testUtils.stubs.DuplicateDependencies2ProjectStub; -import org.apache.maven.plugins.dependency.testUtils.stubs.DuplicateDependenciesProjectStub; import org.apache.maven.project.MavenProject; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; /** * @author Vincent Siveton * @version $Id$ */ -public class TestAnalyzeDuplicateMojo extends AbstractDependencyMojoTestCase { - public void testDuplicate() throws Exception { - MavenProject project = new DuplicateDependenciesProjectStub(); - getContainer().addComponent(project, MavenProject.class.getName()); - - MavenSession session = newMavenSession(project); - getContainer().addComponent(session, MavenSession.class.getName()); - - File testPom = new File(getBasedir(), "target/test-classes/unit/duplicate-dependencies/plugin-config.xml"); - AnalyzeDuplicateMojo mojo = (AnalyzeDuplicateMojo) lookupMojo("analyze-duplicate", testPom); - assertNotNull(mojo); - DuplicateLog log = new DuplicateLog(); - mojo.setLog(log); - mojo.execute(); +@ExtendWith(MockitoExtension.class) +@MojoTest +public class TestAnalyzeDuplicateMojo { - assertTrue(log.getContent() - .contains("List of duplicate dependencies defined in in " + "your pom.xml")); - assertTrue(log.getContent().contains("junit:junit:jar")); - } + @Inject + private MavenProject project; + + @Mock + private Log log; - public void testDuplicate2() throws Exception { - MavenProject project = new DuplicateDependencies2ProjectStub(); - getContainer().addComponent(project, MavenProject.class.getName()); + @Provides + private Log logProvides() { + return log; + } - MavenSession session = newMavenSession(project); - getContainer().addComponent(session, MavenSession.class.getName()); + @Test + @Basedir("/unit/duplicate-dependencies") + @InjectMojo(goal = "analyze-duplicate") + public void testDuplicate(AnalyzeDuplicateMojo mojo) throws Exception { + when(project.getFile()).thenReturn(new File(MojoExtension.getBasedir(), "plugin-config.xml")); + when(log.isInfoEnabled()).thenReturn(true); - File testPom = new File(getBasedir(), "target/test-classes/unit/duplicate-dependencies/plugin-config2.xml"); - AnalyzeDuplicateMojo mojo = (AnalyzeDuplicateMojo) lookupMojo("analyze-duplicate", testPom); - assertNotNull(mojo); - DuplicateLog log = new DuplicateLog(); - mojo.setLog(log); mojo.execute(); - assertTrue(log.getContent() - .contains("List of duplicate dependencies defined in in " + "your pom.xml")); - assertTrue(log.getContent().contains("junit:junit:jar")); + ArgumentCaptor logCapture = ArgumentCaptor.forClass(String.class); + verify(log).info(logCapture.capture()); + + assertTrue(logCapture + .getValue() + .contains("List of duplicate dependencies defined in in your pom.xml")); + assertTrue(logCapture.getValue().contains("junit:junit:jar")); } - static class DuplicateLog implements Log { - StringBuilder sb = new StringBuilder(); - - /** {@inheritDoc} */ - @Override - public void debug(CharSequence content) { - print("debug", content); - } - - /** {@inheritDoc} */ - @Override - public void debug(CharSequence content, Throwable error) { - print("debug", content, error); - } - - /** {@inheritDoc} */ - @Override - public void debug(Throwable error) { - print("debug", error); - } - - /** {@inheritDoc} */ - @Override - public void info(CharSequence content) { - print("info", content); - } - - /** {@inheritDoc} */ - @Override - public void info(CharSequence content, Throwable error) { - print("info", content, error); - } - - /** {@inheritDoc} */ - @Override - public void info(Throwable error) { - print("info", error); - } - - /** {@inheritDoc} */ - @Override - public void warn(CharSequence content) { - print("warn", content); - } - - /** {@inheritDoc} */ - @Override - public void warn(CharSequence content, Throwable error) { - print("warn", content, error); - } - - /** {@inheritDoc} */ - @Override - public void warn(Throwable error) { - print("warn", error); - } - - /** {@inheritDoc} */ - @Override - public void error(CharSequence content) { - System.err.println("[error] " + content.toString()); - } - - /** {@inheritDoc} */ - @Override - public void error(CharSequence content, Throwable error) { - StringWriter sWriter = new StringWriter(); - PrintWriter pWriter = new PrintWriter(sWriter); - - error.printStackTrace(pWriter); - - System.err.println( - "[error] " + content.toString() + System.lineSeparator() + System.lineSeparator() + sWriter); - } - - /** - * @see org.apache.maven.plugin.logging.Log#error(java.lang.Throwable) - */ - @Override - public void error(Throwable error) { - StringWriter sWriter = new StringWriter(); - PrintWriter pWriter = new PrintWriter(sWriter); - - error.printStackTrace(pWriter); - - System.err.println("[error] " + sWriter); - } - - /** - * @see org.apache.maven.plugin.logging.Log#isDebugEnabled() - */ - @Override - public boolean isDebugEnabled() { - return false; - } - - /** - * @see org.apache.maven.plugin.logging.Log#isInfoEnabled() - */ - @Override - public boolean isInfoEnabled() { - return true; - } - - /** - * @see org.apache.maven.plugin.logging.Log#isWarnEnabled() - */ - @Override - public boolean isWarnEnabled() { - return true; - } - - /** - * @see org.apache.maven.plugin.logging.Log#isErrorEnabled() - */ - @Override - public boolean isErrorEnabled() { - return true; - } - - private void print(String prefix, CharSequence content) { - sb.append("[") - .append(prefix) - .append("] ") - .append(content.toString()) - .append(System.lineSeparator()); - } - - private void print(String prefix, Throwable error) { - StringWriter sWriter = new StringWriter(); - PrintWriter pWriter = new PrintWriter(sWriter); - - error.printStackTrace(pWriter); - - sb.append("[").append(prefix).append("] ").append(sWriter).append(System.lineSeparator()); - } - - private void print(String prefix, CharSequence content, Throwable error) { - StringWriter sWriter = new StringWriter(); - PrintWriter pWriter = new PrintWriter(sWriter); - - error.printStackTrace(pWriter); - - sb.append("[") - .append(prefix) - .append("] ") - .append(content.toString()) - .append(System.lineSeparator()) - .append(System.lineSeparator()); - sb.append(sWriter).append(System.lineSeparator()); - } - - protected String getContent() { - return sb.toString(); - } + @Test + @Basedir("/unit/duplicate-dependencies") + @InjectMojo(goal = "analyze-duplicate") + public void testDuplicate2(AnalyzeDuplicateMojo mojo) throws Exception { + when(project.getFile()).thenReturn(new File(MojoExtension.getBasedir(), "plugin-config2.xml")); + when(log.isInfoEnabled()).thenReturn(true); + + mojo.execute(); + + ArgumentCaptor logCapture = ArgumentCaptor.forClass(String.class); + verify(log).info(logCapture.capture()); + + assertTrue(logCapture + .getValue() + .contains("List of duplicate dependencies defined in in your pom.xml")); + assertTrue(logCapture.getValue().contains("junit:junit:jar")); } } diff --git a/src/test/java/org/apache/maven/plugins/dependency/testUtils/stubs/DuplicateDependencies2ProjectStub.java b/src/test/java/org/apache/maven/plugins/dependency/testUtils/stubs/DuplicateDependencies2ProjectStub.java deleted file mode 100644 index a9c528382..000000000 --- a/src/test/java/org/apache/maven/plugins/dependency/testUtils/stubs/DuplicateDependencies2ProjectStub.java +++ /dev/null @@ -1,60 +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. - */ -package org.apache.maven.plugins.dependency.testUtils.stubs; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.testing.stubs.MavenProjectStub; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; - -/** - * very simple stub of maven project, going to take a lot of work to make it useful as a stub though - */ -public class DuplicateDependencies2ProjectStub extends MavenProjectStub { - public DuplicateDependencies2ProjectStub() { - File pom = new File(getBasedir(), "plugin-config2.xml"); - MavenXpp3Reader pomReader = new MavenXpp3Reader(); - - try (FileInputStream in = new FileInputStream(pom)) { - Model model = pomReader.read(in); - setModel(model); - - setGroupId(model.getGroupId()); - setArtifactId(model.getArtifactId()); - setVersion(model.getVersion()); - setName(model.getName()); - setUrl(model.getUrl()); - setPackaging(model.getPackaging()); - setFile(pom); - } catch (IOException | XmlPullParserException e) { - throw new RuntimeException(e); - } - } - - /** - * @see org.apache.maven.plugin.testing.stubs.MavenProjectStub#getBasedir() - */ - public File getBasedir() { - return new File(super.getBasedir() + "/src/test/resources/unit/duplicate-dependencies"); - } -} diff --git a/src/test/java/org/apache/maven/plugins/dependency/testUtils/stubs/DuplicateDependenciesProjectStub.java b/src/test/java/org/apache/maven/plugins/dependency/testUtils/stubs/DuplicateDependenciesProjectStub.java deleted file mode 100644 index 662248dd7..000000000 --- a/src/test/java/org/apache/maven/plugins/dependency/testUtils/stubs/DuplicateDependenciesProjectStub.java +++ /dev/null @@ -1,60 +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. - */ -package org.apache.maven.plugins.dependency.testUtils.stubs; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.plugin.testing.stubs.MavenProjectStub; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; - -/** - * very simple stub of maven project, going to take a lot of work to make it useful as a stub though - */ -public class DuplicateDependenciesProjectStub extends MavenProjectStub { - public DuplicateDependenciesProjectStub() { - File pom = new File(getBasedir(), "plugin-config.xml"); - MavenXpp3Reader pomReader = new MavenXpp3Reader(); - - try (FileInputStream in = new FileInputStream(pom)) { - Model model = pomReader.read(in); - setModel(model); - - setGroupId(model.getGroupId()); - setArtifactId(model.getArtifactId()); - setVersion(model.getVersion()); - setName(model.getName()); - setUrl(model.getUrl()); - setPackaging(model.getPackaging()); - setFile(pom); - } catch (IOException | XmlPullParserException e) { - throw new RuntimeException(e); - } - } - - /** - * @see org.apache.maven.plugin.testing.stubs.MavenProjectStub#getBasedir() - */ - public File getBasedir() { - return new File(super.getBasedir() + "/src/test/resources/unit/duplicate-dependencies"); - } -} diff --git a/src/test/resources/unit/properties-test/plugin-config.xml b/src/test/resources/unit/properties-test/plugin-config.xml deleted file mode 100644 index e7edfc507..000000000 --- a/src/test/resources/unit/properties-test/plugin-config.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - maven-dependency-plugin - - - - - - - - org.apache.maven - maven-artifact - 2.0.9 - - - junit - junit - 4.1 - - - \ No newline at end of file