Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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<Artifact> artifacts = this.stubFactory.getScopedArtifacts();
Set<Artifact> 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"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
* @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 <dependencies/> 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 <dependencyManagement/> in " + "your pom.xml"));
assertTrue(log.getContent().contains("junit:junit:jar"));
ArgumentCaptor<String> logCapture = ArgumentCaptor.forClass(String.class);
verify(log).info(logCapture.capture());

assertTrue(logCapture
.getValue()
.contains("List of duplicate dependencies defined in <dependencies/> 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<String> logCapture = ArgumentCaptor.forClass(String.class);
verify(log).info(logCapture.capture());

assertTrue(logCapture
.getValue()
.contains("List of duplicate dependencies defined in <dependencyManagement/> in your pom.xml"));
assertTrue(logCapture.getValue().contains("junit:junit:jar"));
}
}
Loading