package org.codehaus.mojo.setup.toolchains;
import java.io.File;
import org.apache.maven.execution.DefaultMavenExecutionRequest;
import org.apache.maven.execution.DefaultMavenExecutionResult;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
import org.apache.maven.toolchain.ToolchainsBuilder;
import org.apache.maven.toolchain.model.PersistedToolchains;
import org.apache.maven.toolchain.model.ToolchainModel;
import org.codehaus.mojo.setup.AbstractSetupMojo;
import org.codehaus.mojo.setup.AbstractSetupMojoTest;
public class ToolchainsSetupMojoTest
extends AbstractSetupMojoTest
{
private ToolchainsBuilder toolchainsBuilder;
private ToolchainsSetupMojo setupMojo;
private final String settingsPath = ".m2/toolchains.xml";
public static final String PARAMETER_MERGE = "merge";
private File testResourceDefaultToolchains;
private File testResourceNoToolchains;
private File testResourceMinimumToolchains;
private File targetFile;
@Override
protected void onSetUp()
throws Exception
{
super.onSetUp();
testResourceDefaultToolchains = getTestFile( "src/test/resources/defaultUserHome" );
testResourceNoToolchains = getTestFile( "src/test/resources/emptyUserHome" );
testResourceMinimumToolchains = getTestFile( "src/test/resources/minimalUserHome" );
File testPom =
new File( getBasedir(),
"src/test/resources/unit/default-configuration/default-configuration-plugin-config.xml" );
setupMojo = (ToolchainsSetupMojo) lookupMojo( "toolchains", testPom );
toolchainsBuilder = (ToolchainsBuilder) lookup( ToolchainsBuilder.class );
}
@Override
protected void prepareMojo( File workDirectory )
throws Exception
{
super.prepareMojo( workDirectory );
DefaultMavenExecutionRequest mavenRequest = new DefaultMavenExecutionRequest();
mavenRequest.setUserToolchainsFile( new File( workDirectory.getPath() + File.separator + settingsPath ) );
mavenRequest.setSystemProperties( System.getProperties() );
setVariableValueToObject( getMojo(), "session", new MavenSession( this.getContainer(),
new MavenRepositorySystemSession(),
mavenRequest,
new DefaultMavenExecutionResult() ) );
targetFile = mavenRequest.getUserToolchainsFile();
}
@Override
protected File getDirectoryDefaultTargetFile()
{
return testResourceDefaultToolchains;
}
@Override
protected File getDirectoryMissingTargetFile()
{
return testResourceNoToolchains;
}
@Override
protected File getDirectoryMinimumTargetFile()
{
return testResourceMinimumToolchains;
}
@Override
protected AbstractSetupMojo getMojo()
{
return setupMojo;
}
@Override
protected String getTemplateBase()
{
return "toolchains";
}
@Override
protected String getTestPrefix()
{
return "toolchains";
}
@Override
protected File getTargetFile()
{
return targetFile;
}
@Override
public void testDefaultTargetDefaultTemplateMergeEXPAND()
throws Exception
{
try {
super.testDefaultTargetDefaultTemplateMergeEXPAND();
fail("unsupported");
}
catch ( MojoExecutionException e) {}
}
@Override
public void testDefaultTargetDefaultTemplateMergeUPDATE()
throws Exception
{
try {
super.testDefaultTargetDefaultTemplateMergeUPDATE();
fail("unsupported");
}
catch ( MojoExecutionException e) {}
}
@Override
public void testMinimumTargetDefaultTemplateMergeEXPAND()
throws Exception
{
try {
super.testMinimumTargetDefaultTemplateMergeEXPAND();
fail("unsupported");
}
catch ( MojoExecutionException e) {}
}
@Override
public void testMinimumTargetDefaultTemplateMergeUPDATE()
throws Exception
{
try {
super.testMinimumTargetDefaultTemplateMergeUPDATE();
fail("unsupported");
}
catch ( MojoExecutionException e) {}
}
@Override
protected void validateAsDefaultTemplate()
throws Exception
{
PersistedToolchains toolchains = toolchainsBuilder.build( targetFile );
ToolchainModel toolchain = toolchains.getToolchains().get( 0 );
assertEquals( "type_defaultTemplate" , toolchain.getType() );
}
@Override
protected void validateAsCustomTemplate()
throws Exception
{
PersistedToolchains toolchains = toolchainsBuilder.build( targetFile );
ToolchainModel toolchain = toolchains.getToolchains().get( 0 );
assertEquals( "type_customTemplate" , toolchain.getType() );
}
@Override
protected void validateAsFilteredTemplate()
throws Exception
{
PersistedToolchains toolchains = toolchainsBuilder.build( targetFile );
ToolchainModel toolchain = toolchains.getToolchains().get( 0 );
assertEquals( "type_filteredTemplate" , toolchain.getType() );
}
@Override
protected void validateAsMinimumTemplate()
throws Exception
{
PersistedToolchains toolchain = toolchainsBuilder.build( targetFile );
assertEquals( 0, toolchain.getToolchains().size() );
}
@Override
protected void validateAsDefaultSettings()
throws Exception
{
PersistedToolchains toolchains = toolchainsBuilder.build( targetFile );
ToolchainModel toolchain = toolchains.getToolchains().get( 0 );
assertEquals( "type_currentSettings" , toolchain.getType() );
}
@Override
protected void validateAsNoSettings()
throws Exception
{
PersistedToolchains toolchain = toolchainsBuilder.build( targetFile );
assertEquals( null , toolchain );
}
}