package at.nonblocking.maven.nonsnapshot;
import static junit.framework.Assert.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.codehaus.plexus.util.IOUtil;
import org.junit.Test;
import at.nonblocking.maven.nonsnapshot.impl.MavenPomHandlerDefaultImpl;
import at.nonblocking.maven.nonsnapshot.model.MavenModule;
public class MavenPomHandlerDefaultImplTest {
@Test
public void testReadArtifact() throws Exception {
File pomFile = new File("target/test-pom.xml");
IOUtil.copy(new FileReader("src/test/resources/test-pom.xml"), new FileOutputStream(pomFile));
MavenPomHandler pomHandler = new MavenPomHandlerDefaultImpl();
MavenModule wsArtifact = pomHandler.readArtifact(pomFile);
assertEquals("at.nonblocking", wsArtifact.getGroupId());
assertEquals("test1", wsArtifact.getArtifactId());
assertEquals("1.0.0-SNAPSHOT", wsArtifact.getVersion());
assertEquals(8, wsArtifact.getVersionLocation());
assertFalse(wsArtifact.isInsertVersionTag());
assertNull(wsArtifact.getParent());
assertEquals(6, wsArtifact.getDependencies().size());
assertEquals(14, wsArtifact.getDependencies().get(0).getVersionLocation());
assertEquals(20, wsArtifact.getDependencies().get(1).getVersionLocation());
assertEquals(26, wsArtifact.getDependencies().get(2).getVersionLocation());
assertEquals(35, wsArtifact.getDependencies().get(3).getVersionLocation());
assertEquals(40, wsArtifact.getDependencies().get(4).getVersionLocation());
assertEquals(46, wsArtifact.getDependencies().get(5).getVersionLocation());
}
@Test
public void testReadArtifactWithParent() throws Exception {
File pomFile = new File("target/test-pom-parent.xml");
IOUtil.copy(new FileReader("src/test/resources/test-pom-parent.xml"), new FileOutputStream(pomFile));
MavenPomHandler pomHandler = new MavenPomHandlerDefaultImpl();
MavenModule wsArtifact = pomHandler.readArtifact(pomFile);
assertEquals("at.nonblocking", wsArtifact.getGroupId());
assertEquals("test1", wsArtifact.getArtifactId());
assertEquals("1.0.0-SNAPSHOT", wsArtifact.getVersion());
assertEquals(12, wsArtifact.getVersionLocation());
assertNotNull(wsArtifact.getParent());
assertEquals(9, wsArtifact.getParentVersionLocation());
}
@Test
public void testReadAndUpdateArtifact() throws Exception {
File pomFile = new File("target/test-pom.xml");
IOUtil.copy(new FileReader("src/test/resources/test-pom.xml"), new FileOutputStream(pomFile));
MavenPomHandler pomHandler = new MavenPomHandlerDefaultImpl();
MavenModule wsArtifact = pomHandler.readArtifact(pomFile);
wsArtifact.setDirty(true);
wsArtifact.setNewVersion("1.1.1-12345");
MavenModule dependentArtifact = new MavenModule(null, "at.nonblocking.at", "test2", "2.0.5-123");
dependentArtifact.setDirty(true);
dependentArtifact.setNewVersion("5.0.1-555");
wsArtifact.getDependencies().get(1).setArtifact(dependentArtifact);
pomHandler.updateArtifact(wsArtifact);
Model pom = new MavenXpp3Reader().read(new FileInputStream(pomFile));
assertEquals("1.1.1-12345", pom.getVersion());
assertEquals("5.0.1-555", pom.getDependencies().get(1).getVersion());
}
@Test
public void testReadAndUpdateArtifactWithParent() throws Exception {
File pomFile = new File("target/test-pom-parent.xml");
IOUtil.copy(new FileReader("src/test/resources/test-pom-parent.xml"), new FileOutputStream(pomFile));
MavenPomHandler pomHandler = new MavenPomHandlerDefaultImpl();
MavenModule wsArtifact = pomHandler.readArtifact(pomFile);
wsArtifact.setDirty(true);
wsArtifact.setNewVersion("1.1.1-12345");
MavenModule parentArtifact = new MavenModule(null, "at.nonblocking.at", "parent-test", "1.4.5-123");
parentArtifact.setDirty(true);
parentArtifact.setNewVersion("3.3.3-456");
wsArtifact.setParent(parentArtifact);
pomHandler.updateArtifact(wsArtifact);
Model pom = new MavenXpp3Reader().read(new FileInputStream(pomFile));
assertEquals("1.1.1-12345", pom.getVersion());
assertEquals("3.3.3-456", pom.getParent().getVersion());
}
@Test
public void testReadAndUpdateArtifactWithNoVersion() throws Exception {
File pomFile = new File("target/test-pom-noversion.xml");
IOUtil.copy(new FileReader("src/test/resources/test-pom-noversion.xml"), new FileOutputStream(pomFile));
MavenPomHandler pomHandler = new MavenPomHandlerDefaultImpl();
MavenModule wsArtifact = pomHandler.readArtifact(pomFile);
assertNotNull(wsArtifact.getVersion());
assertTrue(wsArtifact.isInsertVersionTag());
wsArtifact.setDirty(true);
wsArtifact.setNewVersion("1.1.1-12345");
pomHandler.updateArtifact(wsArtifact);
Model pom = new MavenXpp3Reader().read(new FileInputStream(pomFile));
assertEquals("1.1.1-12345", pom.getVersion());
}
@Test
public void testReadAndUpdateArtifactInsertVersionTag() throws Exception {
File pomFile = new File("target/test-pom.xml");
IOUtil.copy(new FileReader("src/test/resources/test-pom.xml"), new FileOutputStream(pomFile));
MavenPomHandler pomHandler = new MavenPomHandlerDefaultImpl();
MavenModule wsArtifact = pomHandler.readArtifact(pomFile);
wsArtifact.setDirty(true);
wsArtifact.setNewVersion("1.1.1-12345");
MavenModule dependentArtifact = new MavenModule(null, "at.nonblocking.at", "test2", "2.0.5-123");
dependentArtifact.setDirty(true);
dependentArtifact.setNewVersion("5.0.1-555");
dependentArtifact.setInsertVersionTag(true);
wsArtifact.getDependencies().get(1).setArtifact(dependentArtifact);
pomHandler.updateArtifact(wsArtifact);
Model pom = new MavenXpp3Reader().read(new FileInputStream(pomFile));
assertEquals("1.1.1-12345", pom.getVersion());
assertEquals("5.0.1-555", pom.getDependencies().get(1).getVersion());
}
}