package at.nonblocking.maven.nonsnapshot;
import static junit.framework.Assert.*;
import static org.mockito.Mockito.*;
import java.io.File;
import java.io.PrintWriter;
import java.util.Arrays;
import org.apache.maven.project.MavenProject;
import org.junit.Before;
import org.junit.Test;
public class NonSnapshotCommitMojoTest {
private NonSnapshotCommitMojo nonSnapshotMojo = new NonSnapshotCommitMojo();
private ModuleTraverser mockModuleTraverser = mock(ModuleTraverser.class);
private DependencyTreeProcessor mockDependencyTreeProcessor = mock(DependencyTreeProcessor.class);
private MavenPomHandler mockMavenPomHandler = mock(MavenPomHandler.class);
private ScmHandler mockScmHandler = mock(ScmHandler.class);
private UpstreamDependencyHandler mockUpstreamDependencyHandler = mock(UpstreamDependencyHandler.class);
@Before
public void setupMojo() {
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target/pom.xml"));
this.nonSnapshotMojo.setMavenProject(mavenProject);
this.nonSnapshotMojo.setScmUser("foo");
this.nonSnapshotMojo.setScmPassword("bar");
this.nonSnapshotMojo.setDeferPomCommit(false);
this.nonSnapshotMojo.setModuleTraverser(this.mockModuleTraverser);
this.nonSnapshotMojo.setDependencyTreeProcessor(this.mockDependencyTreeProcessor);
this.nonSnapshotMojo.setMavenPomHandler(this.mockMavenPomHandler);
this.nonSnapshotMojo.setScmHandler(this.mockScmHandler);
this.nonSnapshotMojo.setUpstreamDependencyHandler(this.mockUpstreamDependencyHandler);
}
@Test
public void testCommit() throws Exception {
File pomFilesToCommit = new File("target/nonSnapshotDirtyModules.txt");
File pom1 = new File("target/pom.xml").getAbsoluteFile();
File pom2 = new File("target/test1/pom.xml").getAbsoluteFile();
File pom3 = new File("target/test2/pom.xml").getAbsoluteFile();
File pom4 = new File("test3/pom.xml").getAbsoluteFile();
PrintWriter writer = new PrintWriter(pomFilesToCommit);
writer.write("." + System.getProperty("line.separator"));
writer.write("test1" + System.getProperty("line.separator"));
writer.write("test2" + System.getProperty("line.separator"));
writer.write("../test3" + System.getProperty("line.separator"));
writer.close();
this.nonSnapshotMojo.execute();
verify(this.mockScmHandler).commitFiles(Arrays.asList(pom1, pom2, pom3, pom4), "Nonsnapshot Plugin: Version of 4 modules updated");
assertFalse(pomFilesToCommit.exists());
}
@Test
public void testCommitIgnoreDuplicateEntries() throws Exception {
File pomFilesToCommit = new File("target/nonSnapshotDirtyModules.txt");
File pom1 = new File("target/test1/pom.xml").getAbsoluteFile();
File pom2 = new File("target/test2/pom.xml").getAbsoluteFile();
File pom3 = new File("target/test3/pom.xml").getAbsoluteFile();
PrintWriter writer = new PrintWriter(pomFilesToCommit);
writer.write("test1" + System.getProperty("line.separator"));
writer.write("test2" + System.getProperty("line.separator"));
writer.write("test3" + System.getProperty("line.separator"));
writer.write("test2" + System.getProperty("line.separator"));
writer.close();
this.nonSnapshotMojo.execute();
verify(this.mockScmHandler).commitFiles(Arrays.asList(pom1, pom2, pom3), "Nonsnapshot Plugin: Version of 3 modules updated");
assertFalse(pomFilesToCommit.exists());
}
@Test
public void testDontFailOnCommitTrue() throws Exception {
File pomFilesToCommit = new File("target/nonSnapshotDirtyModules.txt");
File pom1 = new File("target/test1/pom.xml");
PrintWriter writer = new PrintWriter(pomFilesToCommit);
writer.write(pom1.getPath() + System.getProperty("line.separator"));
writer.close();
doThrow(new RuntimeException("test")).when(this.mockScmHandler).commitFiles(anyList(), eq("Nonsnapshot Plugin: Version of 1 artifacts updated"));
this.nonSnapshotMojo.setDontFailOnCommit(true);
this.nonSnapshotMojo.execute();
}
@Test(expected = RuntimeException.class)
public void testDontFailOnCommitFalse() throws Exception {
File pomFilesToCommit = new File("target/nonSnapshotDirtyModules.txt");
File pom1 = new File("target/test1/pom.xml");
PrintWriter writer = new PrintWriter(pomFilesToCommit);
writer.write(pom1.getPath() + System.getProperty("line.separator"));
writer.close();
doThrow(new RuntimeException("test")).when(this.mockScmHandler).commitFiles(anyList(), eq("Nonsnapshot Plugin: Version of 1 modules updated"));
this.nonSnapshotMojo.setDontFailOnCommit(false);
this.nonSnapshotMojo.execute();
}
}