package com.github.danielflower.mavenplugins.release;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static java.util.Arrays.asList;
import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsEqual.equalTo;
public class VersionNamerTest {
final VersionNamer namer = new VersionNamer();
@Test
public void removesTheSnapshotAndSticksTheBuildNumberOnTheEnd() throws Exception {
assertThat(namer.name("1.0-SNAPSHOT", 123L, null).releaseVersion(), is(equalTo("1.0.123")));
}
@Test
public void ifTheBuildNumberIsNullAndThePreviousBuildNumbersIsEmptyListThenZeroIsUsed() throws Exception {
assertThat(namer.name("1.0-SNAPSHOT", null, new ArrayList<Long>()).releaseVersion(), is(equalTo("1.0.0")));
}
@Test
public void ifTheBuildNumberIsNullButThereIsAPreviousBuildNumbersThenThatValueIsIncremented() throws Exception {
assertThat(namer.name("1.0-SNAPSHOT", null, asList(9L, 10L, 8L)).releaseVersion(), is(equalTo("1.0.11")));
}
@Test
public void throwsIfTheVersionWouldNotBeAValidGitTag() {
assertThat(errorMessageOf("1.0-A : yeah /-SNAPSHOT", 0),
hasItems(
"Sorry, '1.0-A : yeah /.0' is not a valid version.",
"Please see https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html for tag naming rules."
)
);
}
private List<String> errorMessageOf(String pomVersion, long buildNumber) {
try {
namer.name(pomVersion, buildNumber, null);
throw new AssertionError("Did not throw an error");
} catch (ValidationException ex) {
return ex.getMessages();
}
}
}