package japicmp.maven;
import japicmp.cmp.JApiCmpArchive;
import japicmp.versioning.SemanticVersion;
import org.apache.maven.plugin.MojoFailureException;
import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
public class VersionChangeTest {
@Test
public void testOneVersionNoChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test
public void testOneVersionPatchChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.4.jar"), "1.2.4")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.PATCH));
}
@Test
public void testOneVersionMinorChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-1.3.0.jar"), "1.3.0")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MINOR));
}
@Test
public void testOneVersionMajorChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-2.0.0.jar"), "2.0.0")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MAJOR));
}
@Test
public void testOneVersionMajorChangeWithSnapshot() throws MojoFailureException {
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-2.0.0-SNAPSHOT.jar"), "2.0.0-SNAPSHOT")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MAJOR));
}
@Test(expected = MojoFailureException.class)
public void testOneVersionNoVersionInFileName() throws MojoFailureException {
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-2.0.jar"), "2.0")), new Parameter());
vc.computeChangeType();
}
@Test
public void testTwoVersionsNoChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.2.3.jar"), "1.2.3")), Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.2.3.jar"), "1.2.3")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test
public void testTwoVersionsPatchChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.2.3.jar"), "1.2.3")), Arrays.asList(new JApiCmpArchive(new File("liba-1.2.4.jar"), "1.2.4"), new JApiCmpArchive(new File("libb-1.2.4.jar"), "1.2.4")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.PATCH));
}
@Test
public void testTwoVersionsMinorChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.2.3.jar"), "1.2.3")), Arrays.asList(new JApiCmpArchive(new File("liba-1.3.0.jar"), "1.3.0"), new JApiCmpArchive(new File("libb-1.3.0.jar"), "1.3.0")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MINOR));
}
@Test
public void testTwoVersionsMajorChange() throws MojoFailureException {
VersionChange vc = new VersionChange(Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.2.3.jar"), "1.2.3")), Arrays.asList(new JApiCmpArchive(new File("liba-2.0.0.jar"), "2.0.0"), new JApiCmpArchive(new File("libb-2.0.0.jar"), "2.0.0")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MAJOR));
}
@Test
public void testTwoVersionsMajorChangeNotAllVersionsTheSame() throws MojoFailureException {
VersionChange vc = new VersionChange(Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.2.3.jar"), "1.2.3")), Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.3.0.jar"), "1.3.0")), new Parameter());
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.MINOR));
}
@Test(expected = MojoFailureException.class)
public void testTwoVersionsMajorChangeNotAllVersionsTheSameAndDifferentNumberofArchives() throws MojoFailureException {
VersionChange vc = new VersionChange(Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.2.4.jar"), "1.2.4")), Arrays.asList(new JApiCmpArchive(new File("liba-1.2.3.jar"), "1.2.3"), new JApiCmpArchive(new File("libb-1.3.0.jar"), "1.3.0"), new JApiCmpArchive(new File("libc-1.4.0.jar"), "1.4.0")), new Parameter());
vc.computeChangeType();
fail();
}
@Test
public void testMissingOldVersion() throws MojoFailureException {
Parameter parameter = new Parameter();
parameter.setIgnoreMissingOldVersion("true");
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), parameter);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test
public void testMissingNewVersion() throws MojoFailureException {
Parameter parameter = new Parameter();
parameter.setIgnoreMissingNewVersion("true");
VersionChange vc = new VersionChange(Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), Collections.singletonList(new JApiCmpArchive(new File("lib-1.2.3.jar"), "1.2.3")), parameter);
assertThat(vc.computeChangeType().get(), is(SemanticVersion.ChangeType.UNCHANGED));
}
@Test(expected = MojoFailureException.class)
public void testNoParameter() throws MojoFailureException {
VersionChange vc = new VersionChange(new ArrayList<JApiCmpArchive>(), new ArrayList<JApiCmpArchive>(), null);
vc.computeChangeType();
}
}