plugin: DefaultCheckstyleExecutorTest: added
This commit is contained in:
parent
c9258fcdc5
commit
e3e38f90eb
1 changed files with 162 additions and 0 deletions
|
@ -0,0 +1,162 @@
|
|||
package net.kemitix.checkstyle.ruleset.plugin;
|
||||
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.model.Dependency;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.Plugin;
|
||||
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
|
||||
import org.apache.maven.plugin.BuildPluginManager;
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
import org.apache.maven.plugin.MojoFailureException;
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.codehaus.plexus.util.xml.Xpp3Dom;
|
||||
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.twdata.maven.mojoexecutor.MojoExecutor;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.BDDMockito.then;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.eq;
|
||||
|
||||
/**
|
||||
* Tests for {@link DefaultCheckstyleExecutor}.
|
||||
*
|
||||
* @author Paul Campbell (pcampbell@kemitix.net)
|
||||
*/
|
||||
public class DefaultCheckstyleExecutorTest {
|
||||
|
||||
@Mock
|
||||
private PluginExecutor pluginExecutor;
|
||||
|
||||
@Mock
|
||||
private MavenProject mavenProject;
|
||||
|
||||
@Mock
|
||||
private MavenSession mavenSession;
|
||||
|
||||
@Mock
|
||||
private ArtifactRepository artifactRepository;
|
||||
|
||||
@Mock
|
||||
private BuildPluginManager pluginManager;
|
||||
|
||||
@Mock
|
||||
private Plugin rulesetPlugin;
|
||||
|
||||
@Mock
|
||||
private Log log;
|
||||
|
||||
private DefaultCheckstyleExecutor checkstyleExecutor;
|
||||
|
||||
private String level;
|
||||
|
||||
@Mock
|
||||
private Artifact artifact;
|
||||
|
||||
private File artifactFile;
|
||||
|
||||
@Rule
|
||||
public TemporaryFolder folder = new TemporaryFolder();
|
||||
|
||||
@Mock
|
||||
private MavenXpp3Reader mavenXpp3Reader;
|
||||
|
||||
@Mock
|
||||
private Model pomModel;
|
||||
|
||||
@Mock
|
||||
private MojoExecutor.Element configElement;
|
||||
|
||||
@Mock
|
||||
private MojoExecutor.Element sourceElement;
|
||||
|
||||
@Mock
|
||||
private Xpp3Dom pluginConfig;
|
||||
|
||||
@Mock
|
||||
private MojoExecutor.ExecutionEnvironment env;
|
||||
|
||||
@Mock
|
||||
private Dependency checkstyle;
|
||||
|
||||
@Mock
|
||||
private Dependency sevntu;
|
||||
|
||||
@Mock
|
||||
private Dependency ruleset;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
level = "test level";
|
||||
checkstyleExecutor = new DefaultCheckstyleExecutor(level, pluginExecutor, mavenXpp3Reader);
|
||||
checkstyleExecutor.setLog(log);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canPerformCheck()
|
||||
throws MojoFailureException, MojoExecutionException, IOException, XmlPullParserException {
|
||||
//given
|
||||
final CheckConfiguration configuration = CheckConfiguration.builder()
|
||||
.mavenProject(mavenProject)
|
||||
.mavenSession(mavenSession)
|
||||
.artifactRepository(artifactRepository)
|
||||
.pluginManager(pluginManager)
|
||||
.rulesetVersion("ruleset version")
|
||||
.build();
|
||||
|
||||
artifactFile = folder.newFile("pom.xml");
|
||||
given(artifactRepository.find(any())).willReturn(artifact);
|
||||
given(artifact.getFile()).willReturn(artifactFile);
|
||||
given(mavenXpp3Reader.read(any(FileReader.class))).willReturn(pomModel);
|
||||
final Properties properties = new Properties();
|
||||
given(pomModel.getProperties()).willReturn(properties);
|
||||
given(pluginExecutor.element(eq("configLocation"), any())).willReturn(configElement);
|
||||
given(pluginExecutor.element(eq("sourceDirectory"), any())).willReturn(sourceElement);
|
||||
given(pluginExecutor.configuration(configElement, sourceElement)).willReturn(pluginConfig);
|
||||
given(pluginExecutor.executionEnvironment(configuration)).willReturn(env);
|
||||
final List<Dependency> dependencies = new ArrayList<>();
|
||||
dependencies.add(checkstyle);
|
||||
dependencies.add(sevntu);
|
||||
dependencies.add(ruleset);
|
||||
final String pluginVersion = "plugin version";
|
||||
final String checkstyleVersion = "checkstyle version";
|
||||
final String sevntuVersion = "sevntu version";
|
||||
final String rulesetVersion = "ruleset version";
|
||||
given(pluginExecutor.dependencies(checkstyle, sevntu, ruleset)).willReturn(dependencies);
|
||||
given(pluginExecutor.dependency("com.puppycrawl.tools", "checkstyle", checkstyleVersion)).willReturn(
|
||||
checkstyle);
|
||||
given(pluginExecutor.dependency(
|
||||
"com.github.sevntu.checkstyle", "sevntu-checkstyle-maven-plugin", sevntuVersion)).willReturn(sevntu);
|
||||
given(pluginExecutor.dependency("net.kemitix", "kemtiix-checkstyle-ruleset", rulesetVersion)).willReturn(
|
||||
ruleset);
|
||||
properties.setProperty("maven-checkstyle-plugin.version", pluginVersion);
|
||||
properties.setProperty("checkstyle.version", checkstyleVersion);
|
||||
properties.setProperty("sevntu.version", sevntuVersion);
|
||||
given(pluginExecutor.plugin(
|
||||
eq("org.apache.maven.plugins"), eq("maven-checkstyle-plugin"), eq(pluginVersion), any())).willReturn(
|
||||
rulesetPlugin);
|
||||
//when
|
||||
checkstyleExecutor.performCheck(configuration);
|
||||
//then
|
||||
|
||||
then(pluginExecutor).should()
|
||||
.executeMojo(rulesetPlugin, "check", pluginConfig, env);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue