|
@@ -0,0 +1,265 @@
|
|
|
+package org.springframework.gradle.antora;
|
|
|
+
|
|
|
+import org.apache.commons.io.IOUtils;
|
|
|
+import org.gradle.api.GradleException;
|
|
|
+import org.gradle.api.Project;
|
|
|
+import org.gradle.api.Task;
|
|
|
+import org.gradle.testfixtures.ProjectBuilder;
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileOutputStream;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+
|
|
|
+import static org.assertj.core.api.Assertions.assertThat;
|
|
|
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
|
|
+import static org.assertj.core.api.Assertions.assertThatIOException;
|
|
|
+
|
|
|
+class CheckAntoraVersionPluginTests {
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void defaultsPropertiesWhenSnapshot() {
|
|
|
+ String expectedVersion = "1.0.0-SNAPSHOT";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("-SNAPSHOT");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void defaultsPropertiesWhenMilestone() {
|
|
|
+ String expectedVersion = "1.0.0-M1";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("-M1");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void defaultsPropertiesWhenRc() {
|
|
|
+ String expectedVersion = "1.0.0-RC1";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("-RC1");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void defaultsPropertiesWhenRelease() {
|
|
|
+ String expectedVersion = "1.0.0";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraPrerelease().isPresent()).isFalse();
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void explicitProperties() {
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ checkAntoraVersionTask.getAntoraVersion().set("1.0.0");
|
|
|
+ checkAntoraVersionTask.getAntoraPrerelease().set("-SNAPSHOT");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("-SNAPSHOT");
|
|
|
+ assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void versionNotDefined() throws Exception {
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ assertThatExceptionOfType(GradleException.class).isThrownBy(() -> checkAntoraVersionTask.check());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void antoraFileNotFound() throws Exception {
|
|
|
+ String expectedVersion = "1.0.0-SNAPSHOT";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ assertThatIOException().isThrownBy(() -> checkAntoraVersionTask.check());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void actualAntoraPrereleaseNull() throws Exception {
|
|
|
+ String expectedVersion = "1.0.0-SNAPSHOT";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ assertThatExceptionOfType(GradleException.class).isThrownBy(() -> checkAntoraVersionTask.check());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void matchesWhenSnapshot() throws Exception {
|
|
|
+ String expectedVersion = "1.0.0-SNAPSHOT";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'\nprerelease: '-SNAPSHOT'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ checkAntoraVersionTask.check();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void matchesWhenMilestone() throws Exception {
|
|
|
+ String expectedVersion = "1.0.0-M1";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'\nprerelease: '-M1'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ checkAntoraVersionTask.check();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void matchesWhenRc() throws Exception {
|
|
|
+ String expectedVersion = "1.0.0-RC1";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'\nprerelease: '-RC1'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ checkAntoraVersionTask.check();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void matchesWhenReleaseAndPrereleaseUndefined() throws Exception {
|
|
|
+ String expectedVersion = "1.0.0";
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.setVersion(expectedVersion);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ checkAntoraVersionTask.check();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void matchesWhenExplicitRelease() throws Exception {
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ ((CheckAntoraVersionTask) task).getAntoraVersion().set("1.0.0");
|
|
|
+ checkAntoraVersionTask.check();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void matchesWhenExplicitPrerelease() throws Exception {
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("version: '1.0.0'\nprerelease: '-SNAPSHOT'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ ((CheckAntoraVersionTask) task).getAntoraVersion().set("1.0.0");
|
|
|
+ ((CheckAntoraVersionTask) task).getAntoraPrerelease().set("-SNAPSHOT");
|
|
|
+ checkAntoraVersionTask.check();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void matchesWhenMissingPropertyDefined() throws Exception {
|
|
|
+ Project project = ProjectBuilder.builder().build();
|
|
|
+ File rootDir = project.getRootDir();
|
|
|
+ IOUtils.write("name: 'ROOT'\nversion: '1.0.0'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
|
|
|
+ project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
|
|
|
+
|
|
|
+ Task task = project.getTasks().findByName(CheckAntoraVersionPlugin.ANTORA_CHECK_VERSION_TASK_NAME);
|
|
|
+
|
|
|
+ assertThat(task).isInstanceOf(CheckAntoraVersionTask.class);
|
|
|
+ CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
|
|
|
+ ((CheckAntoraVersionTask) task).getAntoraVersion().set("1.0.0");
|
|
|
+ checkAntoraVersionTask.check();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|