package at.nonblocking.maven.nonsnapshot;
import static junit.framework.Assert.*;
import static org.mockito.Mockito.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.*;
import at.nonblocking.maven.nonsnapshot.model.MavenArtifact;
import at.nonblocking.maven.nonsnapshot.model.MavenModuleDependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.Profile;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.FileUtils;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InOrder;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import at.nonblocking.maven.nonsnapshot.model.MavenModule;
public class NonSnapshotUpdateVersionsMojoTest {
private NonSnapshotUpdateVersionsMojo nonSnapshotMojo = new NonSnapshotUpdateVersionsMojo();
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.setBaseVersion("1.0.13");
this.nonSnapshotMojo.setScmUser("foo");
this.nonSnapshotMojo.setScmPassword("bar");
this.nonSnapshotMojo.setDeferPomCommit(false);
this.nonSnapshotMojo.setModuleTraverser(mockModuleTraverser);
this.nonSnapshotMojo.setDependencyTreeProcessor(this.mockDependencyTreeProcessor);
this.nonSnapshotMojo.setMavenPomHandler(this.mockMavenPomHandler);
this.nonSnapshotMojo.setScmHandler(this.mockScmHandler);
this.nonSnapshotMojo.setUpstreamDependencyHandler(this.mockUpstreamDependencyHandler);
}
@Test
public void testUpdateSvnRevisionQualifiers() throws Exception {
Model model1 = new Model();
Model model2 = new Model();
Model model3 = new Model();
Model model4 = new Model();
Model model5 = new Model();
File pom1 = new File("test1/pom.xm");
File pom2 = new File("test2/pom.xm");
File pom3 = new File("test3/pom.xm");
File pom4 = new File("test4/pom.xm");
File pom5 = new File("test5/pom.xm");
MavenModule wsArtifact1 = new MavenModule(pom1, "nonblocking.at", "test1", "1.0.0-SNAPSHOT"); // Invalid version
MavenModule wsArtifact2 = new MavenModule(pom2, "nonblocking.at", "test2", "1.1.0-1234");
MavenModule wsArtifact3 = new MavenModule(pom3, "nonblocking.at", "test3", null); // Invalid version
MavenModule wsArtifact4 = new MavenModule(pom4, "nonblocking.at", "test3", "2.1.0-FIX1-1234");
MavenModule wsArtifact5 = new MavenModule(pom5, "nonblocking.at", "test3", "${test.version}"); // Invalid version
List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
artifactList.add(wsArtifact2);
artifactList.add(wsArtifact3);
artifactList.add(wsArtifact4);
artifactList.add(wsArtifact5);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1, model2, model3, model4, model5));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
when(this.mockMavenPomHandler.readArtifact(model2)).thenReturn(wsArtifact2);
when(this.mockMavenPomHandler.readArtifact(model3)).thenReturn(wsArtifact3);
when(this.mockMavenPomHandler.readArtifact(model4)).thenReturn(wsArtifact4);
when(this.mockMavenPomHandler.readArtifact(model5)).thenReturn(wsArtifact5);
when(this.mockScmHandler.isWorkingCopy(any(File.class))).thenReturn(true);
when(this.mockScmHandler.getCurrentRevisionId(pom1.getParentFile())).thenReturn(1355L);
when(this.mockScmHandler.getCurrentRevisionId(pom4.getParentFile())).thenReturn(1356L);
when(this.mockScmHandler.getCurrentRevisionId(pom5.getParentFile())).thenReturn(1357L);
when(this.mockScmHandler.checkChangesSinceRevision(pom4.getParentFile(), 1234, 1356)).thenReturn(true);
this.nonSnapshotMojo.setScmType(SCM_TYPE.SVN);
this.nonSnapshotMojo.setUseSvnRevisionQualifier(true);
this.nonSnapshotMojo.execute();
assertEquals("1.0.13-1355", wsArtifact1.getNewVersion());
assertNull(wsArtifact2.getNewVersion());
assertNotNull(wsArtifact3.getNewVersion());
assertEquals("1.0.13-1356", wsArtifact4.getNewVersion());
assertEquals("1.0.13-1357", wsArtifact5.getNewVersion());
InOrder inOrder = inOrder(this.mockDependencyTreeProcessor, this.mockMavenPomHandler, this.mockScmHandler, this.mockModuleTraverser);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model1);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model2);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model3);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model4);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model5);
inOrder.verify(this.mockDependencyTreeProcessor).buildDependencyTree(artifactList);
inOrder.verify(this.mockScmHandler, times(1)).checkChangesSinceRevision(pom4.getParentFile(), 1234, 1356);
inOrder.verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact1);
verify(this.mockMavenPomHandler, never()).updateArtifact(wsArtifact2);
verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact3);
inOrder.verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact4);
inOrder.verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact5);
inOrder.verify(this.mockScmHandler).commitFiles(Arrays.asList(pom1, pom3, pom4, pom5), ScmHandler.NONSNAPSHOT_COMMIT_MESSAGE_PREFIX + " Version of 4 artifacts updated");
}
@Test
public void testUpdateTimestampQualifiers() throws Exception {
String pattern = "yyyyMMdd";
Date currentTime = new Date();
String currentTimestamp = new SimpleDateFormat(pattern).format(currentTime);
Model model1 = new Model();
Model model2 = new Model();
Model model3 = new Model();
Model model4 = new Model();
Model model5 = new Model();
File pom1 = new File("test1/pom.xm");
File pom2 = new File("test2/pom.xm");
File pom3 = new File("test3/pom.xm");
File pom4 = new File("test4/pom.xm");
File pom5 = new File("test5/pom.xm");
MavenModule wsArtifact1 = new MavenModule(pom1, "nonblocking.at", "test1", "1.0.0-SNAPSHOT"); // Invalid version
MavenModule wsArtifact2 = new MavenModule(pom2, "nonblocking.at", "test2", "1.1.0-" + currentTimestamp);
MavenModule wsArtifact3 = new MavenModule(pom3, "nonblocking.at", "test3", null); // Invalid version
MavenModule wsArtifact4 = new MavenModule(pom4, "nonblocking.at", "test3", "2.1.0-FIX1-1234");
MavenModule wsArtifact5 = new MavenModule(pom5, "nonblocking.at", "test3", "${test.version}"); // Invalid version
List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
artifactList.add(wsArtifact2);
artifactList.add(wsArtifact3);
artifactList.add(wsArtifact4);
artifactList.add(wsArtifact5);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1, model2, model3, model4, model5));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
when(this.mockMavenPomHandler.readArtifact(model2)).thenReturn(wsArtifact2);
when(this.mockMavenPomHandler.readArtifact(model3)).thenReturn(wsArtifact3);
when(this.mockMavenPomHandler.readArtifact(model4)).thenReturn(wsArtifact4);
when(this.mockMavenPomHandler.readArtifact(model5)).thenReturn(wsArtifact5);
when(this.mockScmHandler.getLastCommitDate(pom1.getParentFile())).thenReturn(currentTime);
when(this.mockScmHandler.getLastCommitDate(pom2.getParentFile())).thenReturn(currentTime);
when(this.mockScmHandler.getLastCommitDate(pom3.getParentFile())).thenReturn(currentTime);
when(this.mockScmHandler.getLastCommitDate(pom4.getParentFile())).thenReturn(currentTime);
when(this.mockScmHandler.getLastCommitDate(pom5.getParentFile())).thenReturn(currentTime);
when(this.mockScmHandler.checkChangesSinceRevision(pom2.getParentFile(), 1234, 10000)).thenReturn(false);
when(this.mockScmHandler.checkChangesSinceRevision(pom4.getParentFile(), 1234, 10000)).thenReturn(true);
when(this.mockScmHandler.isWorkingCopy(any(File.class))).thenReturn(true);
this.nonSnapshotMojo.setUseSvnRevisionQualifier(false);
this.nonSnapshotMojo.setTimestampQualifierPattern(pattern);
this.nonSnapshotMojo.execute();
assertEquals("1.0.13-" + currentTimestamp, wsArtifact1.getNewVersion());
assertNull(wsArtifact2.getNewVersion());
assertNotNull(wsArtifact3.getNewVersion());
assertEquals("1.0.13-" + currentTimestamp, wsArtifact4.getNewVersion());
assertEquals("1.0.13-" + currentTimestamp, wsArtifact5.getNewVersion());
InOrder inOrder = inOrder(this.mockDependencyTreeProcessor, this.mockMavenPomHandler, this.mockScmHandler, this.mockModuleTraverser);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model1);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model2);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model3);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model4);
inOrder.verify(this.mockMavenPomHandler).readArtifact(model5);
inOrder.verify(this.mockDependencyTreeProcessor).buildDependencyTree(artifactList);
when(this.mockScmHandler.checkChangesSinceRevision(pom2.getParentFile(), 1234, 10000)).thenReturn(false);
when(this.mockScmHandler.checkChangesSinceRevision(pom4.getParentFile(), 1234, 10000)).thenReturn(true);
inOrder.verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact1);
verify(this.mockMavenPomHandler, never()).updateArtifact(wsArtifact2);
verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact3);
inOrder.verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact4);
inOrder.verify(this.mockMavenPomHandler, times(1)).updateArtifact(wsArtifact5);
inOrder.verify(this.mockScmHandler).commitFiles(Arrays.asList(pom1, pom3, pom4, pom5), ScmHandler.NONSNAPSHOT_COMMIT_MESSAGE_PREFIX + " Version of 4 artifacts updated");
}
@Test
public void testIncrementalBuildScript() throws Exception {
File scriptFile;
if (System.getProperty("os.name").toLowerCase().contains("win")) {
scriptFile = new File("target/nonsnapshotBuildIncremental.bat");
} else {
scriptFile = new File("target/nonsnapshotBuildIncremental.sh");
}
scriptFile.delete();
Model model1 = new Model();
Model model2 = new Model();
Model model3 = new Model();
Model model4 = new Model();
Model model5 = new Model();
File pom1 = new File("test1/pom.xm");
File pom2 = new File("test2/pom.xm");
File pom3 = new File("test3/pom.xm");
File pom4 = new File("test4/pom.xm");
File pom5 = new File("test5/pom.xm");
MavenModule wsArtifact1 = new MavenModule(pom1, "nonblocking.at", "test1", "1.0.0-SNAPSHOT"); // Invalid version
MavenModule wsArtifact2 = new MavenModule(pom2, "nonblocking.at", "test2", "1.1.0-1234");
MavenModule wsArtifact3 = new MavenModule(pom3, "nonblocking.at", "test3", null); // Invalid version
MavenModule wsArtifact4 = new MavenModule(pom4, "nonblocking.at", "test3", "2.1.0-FIX1-1234");
MavenModule wsArtifact5 = new MavenModule(pom5, "nonblocking.at", "test3", "${test.version}"); // Invalid version
List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
artifactList.add(wsArtifact2);
artifactList.add(wsArtifact3);
artifactList.add(wsArtifact4);
artifactList.add(wsArtifact5);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1, model2, model3, model4, model5));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
when(this.mockMavenPomHandler.readArtifact(model2)).thenReturn(wsArtifact2);
when(this.mockMavenPomHandler.readArtifact(model3)).thenReturn(wsArtifact3);
when(this.mockMavenPomHandler.readArtifact(model4)).thenReturn(wsArtifact4);
when(this.mockMavenPomHandler.readArtifact(model5)).thenReturn(wsArtifact5);
when(this.mockScmHandler.checkChangesSinceRevision(pom2.getParentFile(), 1234, 1355)).thenReturn(false);
when(this.mockScmHandler.checkChangesSinceRevision(pom4.getParentFile(), 1234, 1355)).thenReturn(true);
when(this.mockScmHandler.isWorkingCopy(any(File.class))).thenReturn(true);;
when(this.mockScmHandler.getCurrentRevisionId(pom1.getParentFile())).thenReturn(1355L);
when(this.mockScmHandler.getCurrentRevisionId(pom4.getParentFile())).thenReturn(1355L);
when(this.mockScmHandler.getCurrentRevisionId(pom5.getParentFile())).thenReturn(1355L);
this.nonSnapshotMojo.setScmType(SCM_TYPE.SVN);
this.nonSnapshotMojo.setUseSvnRevisionQualifier(true);
this.nonSnapshotMojo.setGenerateIncrementalBuildScripts(true);
this.nonSnapshotMojo.execute();
assertTrue(scriptFile.exists());
assertTrue(FileUtils.fileRead(scriptFile).contains(" --projects ../test1,../test3,../test4,../test5 "));
}
@Test
public void testChangedProjectsPropertyFile() throws Exception {
File propertyFile = new File("target/nonsnapshotChangedProjects.properties");
propertyFile.delete();
Model model1 = new Model();
Model model2 = new Model();
Model model3 = new Model();
Model model4 = new Model();
Model model5 = new Model();
File pom1 = new File("test1/pom.xm");
File pom2 = new File("test2/pom.xm");
File pom3 = new File("test3/pom.xm");
File pom4 = new File("test4/pom.xm");
File pom5 = new File("test5/pom.xm");
MavenModule wsArtifact1 = new MavenModule(pom1, "nonblocking.at", "test1", "1.0.0-SNAPSHOT"); // Invalid version
MavenModule wsArtifact2 = new MavenModule(pom2, "nonblocking.at", "test2", "1.1.0-1234");
MavenModule wsArtifact3 = new MavenModule(pom3, "nonblocking.at", "test3", null); // Invalid version
MavenModule wsArtifact4 = new MavenModule(pom4, "nonblocking.at", "test3", "2.1.0-FIX1-1234");
MavenModule wsArtifact5 = new MavenModule(pom5, "nonblocking.at", "test3", "${test.version}"); // Invalid version
List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
artifactList.add(wsArtifact2);
artifactList.add(wsArtifact3);
artifactList.add(wsArtifact4);
artifactList.add(wsArtifact5);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1, model2, model3, model4, model5));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
when(this.mockMavenPomHandler.readArtifact(model2)).thenReturn(wsArtifact2);
when(this.mockMavenPomHandler.readArtifact(model3)).thenReturn(wsArtifact3);
when(this.mockMavenPomHandler.readArtifact(model4)).thenReturn(wsArtifact4);
when(this.mockMavenPomHandler.readArtifact(model5)).thenReturn(wsArtifact5);
when(this.mockScmHandler.checkChangesSinceRevision(pom2.getParentFile(), 1234, 1355)).thenReturn(false);
when(this.mockScmHandler.checkChangesSinceRevision(pom4.getParentFile(), 1234, 1355)).thenReturn(true);
when(this.mockScmHandler.isWorkingCopy(any(File.class))).thenReturn(true);;
when(this.mockScmHandler.getCurrentRevisionId(pom1.getParentFile())).thenReturn(1355L);
when(this.mockScmHandler.getCurrentRevisionId(pom4.getParentFile())).thenReturn(1355L);
when(this.mockScmHandler.getCurrentRevisionId(pom5.getParentFile())).thenReturn(1355L);
this.nonSnapshotMojo.setScmType(SCM_TYPE.SVN);
this.nonSnapshotMojo.setUseSvnRevisionQualifier(true);
this.nonSnapshotMojo.setGenerateChangedProjectsPropertyFile(true);
this.nonSnapshotMojo.execute();
assertTrue(propertyFile.exists());
assertTrue(FileUtils.fileRead(propertyFile).contains("nonsnapshot.changed.projects=../test1,../test3,../test4,../test5"));
}
@Test
public void testUpdateUpstreamDependencyVersions() throws Exception {
Model model1 = new Model();
Model model2 = new Model();
File pom1 = new File("test1/pom.xm");
File pom2 = new File("test2/pom.xm");
MavenModule wsArtifact1 = new MavenModule(pom1, "nonblocking.at", "test1", "1.1.0-1234");
final MavenModule wsArtifact2 = new MavenModule(pom2, "nonblocking.at", "test2", "2.2.0-1234");
MavenArtifact upstreamDep1 = new MavenArtifact("nonblocking.at", "test3", "3.3.3-1235");
wsArtifact2.getDependencies().add(new MavenModuleDependency(-1, wsArtifact1));
wsArtifact2.getDependencies().add(new MavenModuleDependency(-1, upstreamDep1));
final List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
artifactList.add(wsArtifact2);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
List<String> upstreamDependencyString = Arrays.asList("at.nonblocking:test1:LATEST");
ProcessedUpstreamDependency upstreamDependency = new ProcessedUpstreamDependency(null, null, -1, -1, -1);
List<ProcessedUpstreamDependency> upstreamDependencies = Arrays.asList(upstreamDependency);
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1, model2));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
when(this.mockMavenPomHandler.readArtifact(model2)).thenReturn(wsArtifact2);
when(this.mockDependencyTreeProcessor.markAllArtifactsDirtyWithDirtyDependencies(artifactList)).then(new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
wsArtifact2.setDirty(true);
return false;
}
});
when(this.mockScmHandler.checkChangesSinceRevision(pom1.getParentFile(), 1234, 10000)).thenReturn(false);
when(this.mockScmHandler.checkChangesSinceRevision(pom2.getParentFile(), 1234, 10000)).thenReturn(false);
when(this.mockScmHandler.isWorkingCopy(any(File.class))).thenReturn(true);
when(this.mockScmHandler.getCurrentRevisionId(pom2.getParentFile())).thenReturn(6677L);
when(this.mockUpstreamDependencyHandler.processDependencyList(upstreamDependencyString)).thenReturn(upstreamDependencies);
when(this.mockUpstreamDependencyHandler.findMatch(upstreamDep1, upstreamDependencies)).thenReturn(upstreamDependency);
when(this.mockUpstreamDependencyHandler.resolveLatestVersion(upstreamDep1, upstreamDependency, null, null, null)).thenReturn("5.0.1-1234");
this.nonSnapshotMojo.setScmType(SCM_TYPE.SVN);
this.nonSnapshotMojo.setUseSvnRevisionQualifier(true);
this.nonSnapshotMojo.setUpstreamDependencies(upstreamDependencyString);
this.nonSnapshotMojo.execute();
verify(this.mockUpstreamDependencyHandler, times(1)).processDependencyList(upstreamDependencyString);
verify(this.mockUpstreamDependencyHandler, times(1)).findMatch(upstreamDep1, upstreamDependencies);
verify(this.mockUpstreamDependencyHandler, times(1)).resolveLatestVersion(upstreamDep1, upstreamDependency, null, null, null);
assertNull(wsArtifact1.getNewVersion());
assertEquals("1.0.13-6677", wsArtifact2.getNewVersion());
}
@Test
public void testUpdateUpstreamDependencyVersionsParent() throws Exception {
Model model1 = new Model();
Model model2 = new Model();
File pom1 = new File("test1/pom.xm");
File pom2 = new File("test2/pom.xm");
MavenModule wsArtifact1 = new MavenModule(pom1, "nonblocking.at", "test1", "1.1.0-1234");
final MavenModule wsArtifact2 = new MavenModule(pom2, "nonblocking.at", "test2", "2.2.0-1234");
MavenArtifact upstreamDep1 = new MavenArtifact("nonblocking.at", "test3", "3.3.3-1235");
wsArtifact2.getDependencies().add(new MavenModuleDependency(-1, wsArtifact1));
wsArtifact2.setParent(upstreamDep1);
final List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
artifactList.add(wsArtifact2);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
List<String> upstreamDependencyString = Arrays.asList("at.nonblocking:test1:LATEST");
ProcessedUpstreamDependency upstreamDependency = new ProcessedUpstreamDependency(null, null, -1, -1, -1);
List<ProcessedUpstreamDependency> upstreamDependencies = Arrays.asList(upstreamDependency);
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1, model2));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
when(this.mockMavenPomHandler.readArtifact(model2)).thenReturn(wsArtifact2);
when(this.mockDependencyTreeProcessor.markAllArtifactsDirtyWithDirtyDependencies(artifactList)).then(new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
wsArtifact2.setDirty(true);
return false;
}
});
when(this.mockScmHandler.checkChangesSinceRevision(pom1.getParentFile(), 1234, 10000)).thenReturn(false);
when(this.mockScmHandler.checkChangesSinceRevision(pom2.getParentFile(), 1234, 10000)).thenReturn(false);
when(this.mockScmHandler.isWorkingCopy(any(File.class))).thenReturn(true);
when(this.mockScmHandler.getCurrentRevisionId(pom2.getParentFile())).thenReturn(6677L);
when(this.mockUpstreamDependencyHandler.processDependencyList(upstreamDependencyString)).thenReturn(upstreamDependencies);
when(this.mockUpstreamDependencyHandler.findMatch(upstreamDep1, upstreamDependencies)).thenReturn(upstreamDependency);
when(this.mockUpstreamDependencyHandler.resolveLatestVersion(upstreamDep1, upstreamDependency, null, null, null)).thenReturn("5.0.1-1234");
this.nonSnapshotMojo.setScmType(SCM_TYPE.SVN);
this.nonSnapshotMojo.setUseSvnRevisionQualifier(true);
this.nonSnapshotMojo.setUpstreamDependencies(upstreamDependencyString);
this.nonSnapshotMojo.execute();
verify(this.mockUpstreamDependencyHandler, times(1)).processDependencyList(upstreamDependencyString);
verify(this.mockUpstreamDependencyHandler, times(1)).findMatch(upstreamDep1, upstreamDependencies);
verify(this.mockUpstreamDependencyHandler, times(1)).resolveLatestVersion(upstreamDep1, upstreamDependency, null, null, null);
assertNull(wsArtifact1.getNewVersion());
assertEquals("1.0.13-6677", wsArtifact2.getNewVersion());
}
@Test
public void testNoUpdate() throws Exception {
Model model1 = new Model();
File pom1 = new File("test1/pom.xm");
MavenModule wsArtifact1 = new MavenModule(pom1, "nonblocking.at", "test1", "1.0.0-1222");
List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
this.nonSnapshotMojo.setScmType(SCM_TYPE.SVN);
this.nonSnapshotMojo.setUseSvnRevisionQualifier(true);
this.nonSnapshotMojo.execute();
verify(this.mockMavenPomHandler).readArtifact(model1);
verify(this.mockDependencyTreeProcessor).buildDependencyTree(artifactList);
verify(this.mockMavenPomHandler, times(0)).updateArtifact(wsArtifact1);
verify(this.mockScmHandler, times(0)).commitFiles(anyListOf(File.class), anyString());
}
@Test
public void testUpdateDeferCommit() throws Exception {
Model model1 = new Model();
File pom1 = new File("test1/pom.xm");
File dirtyModulesRegistry = new File("target/nonSnapshotDirtyModules.txt");
if (dirtyModulesRegistry.exists()) {
dirtyModulesRegistry.delete();
}
MavenModule wsArtifact1 = new MavenModule(pom1, "at.nonblocking", "test3", "1.0.0-1222");
List<MavenModule> artifactList = new ArrayList<>();
artifactList.add(wsArtifact1);
MavenProject mavenProject = new MavenProject();
mavenProject.setFile(new File("target"));
this.nonSnapshotMojo.setDeferPomCommit(true);
when(this.mockModuleTraverser.findAllModules(mavenProject, Collections.<Profile>emptyList())).thenReturn(Arrays.asList(model1));
when(this.mockMavenPomHandler.readArtifact(model1)).thenReturn(wsArtifact1);
when(this.mockScmHandler.getLastCommitDate(pom1.getParentFile())).thenReturn(new Date());
when(this.mockScmHandler.getCurrentRevisionId(pom1.getParentFile())).thenReturn(1444L);
when(this.mockScmHandler.isWorkingCopy(any(File.class))).thenReturn(true);
this.nonSnapshotMojo.execute();
assertTrue(dirtyModulesRegistry.exists());
BufferedReader reader = new BufferedReader(new FileReader(dirtyModulesRegistry));
assertNotNull(reader.readLine());
assertNull(reader.readLine());
reader.close();
}
}