package hudson.maven;
import hudson.Launcher;
import hudson.model.BuildListener;
import hudson.model.ParametersDefinitionProperty;
import hudson.model.Result;
import hudson.model.StringParameterDefinition;
import hudson.tasks.Maven.MavenInstallation;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.jvnet.hudson.test.Bug;
import org.jvnet.hudson.test.Email;
import org.jvnet.hudson.test.ExtractResourceSCM;
import org.jvnet.hudson.test.HudsonTestCase;
/**
* @author Olivier Lamy
*/
public class Maven3BuildTest extends HudsonTestCase {
public void testSimpleMaven3Build() throws Exception {
MavenModuleSet m = createMavenProject();
MavenInstallation mavenInstallation = configureMaven3();
m.setMaven( mavenInstallation.getName() );
m.getReporters().add(new TestReporter());
m.setScm(new ExtractResourceSCM(getClass().getResource("maven3-project.zip")));
m.setGoals( "clean install" );
MavenModuleSetBuild b = buildAndAssertSuccess(m);
assertTrue( MavenUtil.maven3orLater( b.getMavenVersionUsed() ) );
}
public void testSimpleMaven3BuildRedeployPublisher() throws Exception {
MavenModuleSet m = createMavenProject();
MavenInstallation mavenInstallation = configureMaven3();
m.setMaven( mavenInstallation.getName() );
File repo = createTmpDir();
FileUtils.cleanDirectory( repo );
m.getReporters().add(new TestReporter());
m.getPublishersList().add(new RedeployPublisher("",repo.toURI().toString(),true, false));
m.setScm(new ExtractResourceSCM(getClass().getResource("maven3-project.zip")));
m.setGoals( "clean install" );
MavenModuleSetBuild b = buildAndAssertSuccess(m);
assertTrue( MavenUtil.maven3orLater( b.getMavenVersionUsed() ) );
File artifactDir = new File(repo,"com/mycompany/app/my-app/1.7-SNAPSHOT/");
String[] files = artifactDir.list( new FilenameFilter()
{
public boolean accept( File dir, String name )
{
System.out.println("file name : " +name );
return name.endsWith( ".jar" );
}
});
assertTrue("SNAPSHOT exist",!files[0].contains( "SNAPSHOT" ));
assertTrue("file not ended with -1.jar", files[0].endsWith( "-1.jar" ));
}
public void testSiteBuildWithForkedMojo() throws Exception {
MavenModuleSet m = createMavenProject();
MavenInstallation mavenInstallation = configureMaven3();
m.setMaven( mavenInstallation.getName() );
m.getReporters().add(new TestReporter());
m.setScm(new ExtractResourceSCM(getClass().getResource("maven3-project.zip")));
m.setGoals( "clean site" );
MavenModuleSetBuild b = buildAndAssertSuccess(m);
assertTrue( MavenUtil.maven3orLater( b.getMavenVersionUsed() ) );
}
@Bug(value=8395)
public void testMaven3BuildWrongScope() throws Exception {
File pom = new File(this.getClass().getResource("test-pom-8395.xml").toURI());
MavenModuleSet m = createMavenProject();
MavenInstallation mavenInstallation = configureMaven3();
m.setMaven( mavenInstallation.getName() );
m.getReporters().add(new TestReporter());
m.setRootPOM(pom.getAbsolutePath());
m.setGoals( "clean validate" );
MavenModuleSetBuild mmsb = m.scheduleBuild2( 0 ).get();
assertBuildStatus( Result.FAILURE, mmsb );
System.out.println("mmsb.getProject().getModules " + mmsb.getProject().getModules() );
assertTrue( mmsb.getProject().getModules().isEmpty());
}
@Bug(value=8390)
public void testMaven3BuildWrongInheritence() throws Exception {
MavenModuleSet m = createMavenProject();
MavenInstallation mavenInstallation = configureMaven3();
m.setMaven( mavenInstallation.getName() );
m.getReporters().add(new TestReporter());
m.setScm(new ExtractResourceSCM(getClass().getResource("incorrect-inheritence-testcase.zip")));
m.setGoals( "clean validate" );
MavenModuleSetBuild mmsb = m.scheduleBuild2( 0 ).get();
assertBuildStatus( Result.FAILURE, mmsb );
System.out.println("mmsb.getProject().getModules " + mmsb.getProject().getModules() );
assertTrue( mmsb.getProject().getModules().isEmpty());
}
@Bug(value=8445)
public void testMavenSeveralModulesInDirectory() throws Exception {
MavenModuleSet m = createMavenProject();
MavenInstallation mavenInstallation = configureMaven3();
m.setMaven( mavenInstallation.getName() );
m.getReporters().add(new TestReporter());
m.setScm(new ExtractResourceSCM(getClass().getResource("several-modules-in-directory.zip")));
m.setGoals( "clean validate" );
MavenModuleSetBuild mmsb = buildAndAssertSuccess(m);
assertFalse( mmsb.getProject().getModules().isEmpty());
}
@Email("https://groups.google.com/d/msg/hudson-users/Xhw00UopVN0/FA9YqDAIsSYJ")
public void testMavenWithDependencyVersionInEnvVar() throws Exception {
MavenModuleSet m = createMavenProject();
MavenInstallation mavenInstallation = configureMaven3();
ParametersDefinitionProperty parametersDefinitionProperty =
new ParametersDefinitionProperty(new StringParameterDefinition( "JUNITVERSION", "3.8.2" ));
m.addProperty( parametersDefinitionProperty );
m.setMaven( mavenInstallation.getName() );
m.getReporters().add(new TestReporter());
m.setScm(new ExtractResourceSCM(getClass().getResource("envars-maven-project.zip")));
m.setGoals( "clean test-compile" );
MavenModuleSetBuild mmsb = buildAndAssertSuccess(m);
assertFalse( mmsb.getProject().getModules().isEmpty());
}
@Bug(8484)
public void testMultiModMavenNonRecursive() throws Exception {
MavenInstallation mavenInstallation = configureMaven3();
MavenModuleSet m = createMavenProject();
m.setMaven( mavenInstallation.getName() );
m.getReporters().add(new TestReporter());
m.setScm(new ExtractResourceSCM(getClass().getResource("maven-multimod.zip")));
m.setGoals( "-N validate" );
assertTrue("MavenModuleSet.isNonRecursive() should be true", m.isNonRecursive());
buildAndAssertSuccess(m);
assertEquals("not only one module", 1, m.getModules().size());
}
private static class TestReporter extends MavenReporter {
@Override
public boolean end(MavenBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
assertNotNull(build.getProject().getWorkspace());
assertNotNull(build.getWorkspace());
return true;
}
}
}