package japicmp.maven;
import com.google.common.base.Optional;
import edu.emory.mathcs.backport.java.util.Arrays;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.mockito.Mockito.mock;
public class SkipModuleStrategyTest {
@Test
public void testModuleIsExcluded() {
PluginParameters pluginParameters = createPluginParameters();
MavenParameters mavenParameters = createMavenParameters();
mavenParameters.getMavenProject().setArtifactId("name-to-exclude");
pluginParameters.getParameterParam().setExcludeModules(Arrays.asList(new String[]{".*excl.*"}));
SkipModuleStrategy skipModuleStrategy = new SkipModuleStrategy(pluginParameters, mavenParameters, mock(Log.class));
assertThat(skipModuleStrategy.skip(), is(true));
}
@Test
public void testModuleIsIncluded() {
PluginParameters pluginParameters = createPluginParameters();
MavenParameters mavenParameters = createMavenParameters();
mavenParameters.getMavenProject().setArtifactId("name-to-include");
pluginParameters.getParameterParam().setIncludeModules(Arrays.asList(new String[]{".*incl.*"}));
SkipModuleStrategy skipModuleStrategy = new SkipModuleStrategy(pluginParameters, mavenParameters, mock(Log.class));
assertThat(skipModuleStrategy.skip(), is(false));
}
@Test
public void testModuleIsIncludedAndExcludeDoesNotMatch() {
PluginParameters pluginParameters = createPluginParameters();
MavenParameters mavenParameters = createMavenParameters();
mavenParameters.getMavenProject().setArtifactId("name-to-include");
pluginParameters.getParameterParam().setExcludeModules(Arrays.asList(new String[]{".*excl.*"}));
SkipModuleStrategy skipModuleStrategy = new SkipModuleStrategy(pluginParameters, mavenParameters, mock(Log.class));
assertThat(skipModuleStrategy.skip(), is(false));
}
@Test
public void testExcludeBeforeInclude() {
PluginParameters pluginParameters = createPluginParameters();
MavenParameters mavenParameters = createMavenParameters();
mavenParameters.getMavenProject().setArtifactId("name-to-include");
pluginParameters.getParameterParam().setExcludeModules(Arrays.asList(new String[]{".*incl.*"}));
pluginParameters.getParameterParam().setIncludeModules(Arrays.asList(new String[]{".*incl.*"}));
SkipModuleStrategy skipModuleStrategy = new SkipModuleStrategy(pluginParameters, mavenParameters, mock(Log.class));
assertThat(skipModuleStrategy.skip(), is(true));
}
@Test
public void testModuleIsIncludedAndNoIncludesAndExcludesDefined() {
PluginParameters pluginParameters = createPluginParameters();
MavenParameters mavenParameters = createMavenParameters();
mavenParameters.getMavenProject().setArtifactId("name-to-include");
SkipModuleStrategy skipModuleStrategy = new SkipModuleStrategy(pluginParameters, mavenParameters, mock(Log.class));
assertThat(skipModuleStrategy.skip(), is(false));
}
@Test
public void testModuleIsNotIncludedAndNoIncludesDefined() {
PluginParameters pluginParameters = createPluginParameters();
MavenParameters mavenParameters = createMavenParameters();
mavenParameters.getMavenProject().setArtifactId("name-to-include");
pluginParameters.getParameterParam().setIncludeModules(Arrays.asList(new String[]{".*test.*"}));
SkipModuleStrategy skipModuleStrategy = new SkipModuleStrategy(pluginParameters, mavenParameters, mock(Log.class));
assertThat(skipModuleStrategy.skip(), is(true));
}
@Test
public void testMavenProjectNameIsNotAvailable() {
PluginParameters pluginParameters = createPluginParameters();
MavenParameters mavenParameters = createMavenParameters();
mavenParameters.getMavenProject().setArtifactId(null);
SkipModuleStrategy skipModuleStrategy = new SkipModuleStrategy(pluginParameters, mavenParameters, mock(Log.class));
assertThat(skipModuleStrategy.skip(), is(false));
}
private MavenParameters createMavenParameters() {
return new MavenParameters(new ArrayList<ArtifactRepository>(), mock(ArtifactFactory.class), mock(ArtifactRepository.class),
mock(ArtifactResolver.class), new MavenProject(), mock(MojoExecution.class), "", mock(ArtifactMetadataSource.class));
}
private PluginParameters createPluginParameters() {
Version oldVersion = JApiCmpMojoTest.createVersion("groupId", "artifactId", "0.1.0");
Version newVersion = JApiCmpMojoTest.createVersion("groupId", "artifactId", "0.1.1");
Parameter parameter = new Parameter();
return new PluginParameters("false", newVersion, oldVersion, parameter, new ArrayList<Dependency>(),
Optional.<File>absent(), Optional.<String>absent(), false, new ArrayList<DependencyDescriptor>(),
new ArrayList<DependencyDescriptor>(), new ArrayList<Dependency>(), new ArrayList<Dependency>());
}
}