2
0

IncludeCheckRemotePluginTest.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. /*
  2. * Copyright 2002-2022 the original author or authors.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * https://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package io.spring.gradle.convention;
  17. import java.io.File;
  18. import java.util.Arrays;
  19. import java.util.HashMap;
  20. import java.util.Map;
  21. import io.spring.gradle.IncludeRepoTask;
  22. import org.apache.commons.io.FileUtils;
  23. import org.gradle.api.Project;
  24. import org.gradle.api.tasks.GradleBuild;
  25. import org.gradle.testfixtures.ProjectBuilder;
  26. import org.junit.jupiter.api.AfterEach;
  27. import org.junit.jupiter.api.Test;
  28. import static org.assertj.core.api.Assertions.assertThat;
  29. class IncludeCheckRemotePluginTest {
  30. Project rootProject;
  31. @AfterEach
  32. public void cleanup() throws Exception {
  33. if (rootProject != null) {
  34. FileUtils.deleteDirectory(rootProject.getProjectDir());
  35. }
  36. }
  37. @Test
  38. void applyWhenExtensionPropertiesNoTasksThenCreateCheckRemoteTaskWithDefaultTask() {
  39. this.rootProject = ProjectBuilder.builder().build();
  40. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  41. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  42. (includeCheckRemoteExtension) -> {
  43. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  44. includeCheckRemoteExtension.setProperty("ref", "main");
  45. });
  46. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  47. assertThat(checkRemote.getTasks()).containsExactly("check");
  48. }
  49. @Test
  50. void applyWhenExtensionPropertiesTasksThenCreateCheckRemoteWithProvidedTasks() {
  51. this.rootProject = ProjectBuilder.builder().build();
  52. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  53. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  54. (includeCheckRemoteExtension) -> {
  55. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  56. includeCheckRemoteExtension.setProperty("ref", "main");
  57. includeCheckRemoteExtension.setProperty("tasks", Arrays.asList("clean", "build", "test"));
  58. });
  59. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  60. assertThat(checkRemote.getTasks()).containsExactly("clean", "build", "test");
  61. }
  62. @Test
  63. void applyWhenExtensionPropertiesInitScriptsThenCreateCheckRemoteWithProvidedTasks() {
  64. this.rootProject = ProjectBuilder.builder().build();
  65. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  66. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  67. (includeCheckRemoteExtension) -> {
  68. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  69. includeCheckRemoteExtension.setProperty("ref", "main");
  70. includeCheckRemoteExtension.setProperty("initScripts", Arrays.asList("spring-security-ci.gradle"));
  71. });
  72. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  73. assertThat(checkRemote.getStartParameter().getAllInitScripts()).extracting(File::getName).containsExactly("spring-security-ci.gradle");
  74. }
  75. @Test
  76. void applyWhenExtensionPropertiesBuildPropertiesThenCreateCheckRemoteWithProvidedTasks() {
  77. Map<String, String> projectProperties = new HashMap<>();
  78. projectProperties.put("localRepositoryPath", "~/local/repository");
  79. projectProperties.put("anotherProperty", "some_value");
  80. this.rootProject = ProjectBuilder.builder().build();
  81. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  82. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  83. (includeCheckRemoteExtension) -> {
  84. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  85. includeCheckRemoteExtension.setProperty("ref", "main");
  86. includeCheckRemoteExtension.setProperty("projectProperties", projectProperties);
  87. });
  88. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  89. assertThat(checkRemote.getStartParameter().getProjectProperties()).containsEntry("localRepositoryPath", "~/local/repository")
  90. .containsEntry("anotherProperty", "some_value");
  91. }
  92. @Test
  93. void applyWhenExtensionPropertiesThenRegisterIncludeRepoTaskWithExtensionProperties() {
  94. this.rootProject = ProjectBuilder.builder().build();
  95. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  96. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  97. (includeCheckRemoteExtension) -> {
  98. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  99. includeCheckRemoteExtension.setProperty("ref", "main");
  100. });
  101. IncludeRepoTask includeRepo = (IncludeRepoTask) this.rootProject.getTasks().named("includeRepo").get();
  102. assertThat(includeRepo).isNotNull();
  103. assertThat(includeRepo.getRepository().get()).isEqualTo("my-project/my-repository");
  104. assertThat(includeRepo.getRef().get()).isEqualTo("main");
  105. }
  106. @Test
  107. void applyWhenRegisterTasksThenCheckRemoteDirSameAsIncludeRepoOutputDir() {
  108. this.rootProject = ProjectBuilder.builder().build();
  109. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  110. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  111. (includeCheckRemoteExtension) -> {
  112. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  113. includeCheckRemoteExtension.setProperty("ref", "main");
  114. });
  115. IncludeRepoTask includeRepo = (IncludeRepoTask) this.rootProject.getTasks().named("includeRepo").get();
  116. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  117. assertThat(checkRemote.getDir()).isEqualTo(includeRepo.getOutputDirectory());
  118. }
  119. @Test
  120. void applyWhenNoExtensionPropertiesThenRegisterTasks() {
  121. this.rootProject = ProjectBuilder.builder().build();
  122. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  123. IncludeRepoTask includeRepo = (IncludeRepoTask) this.rootProject.getTasks().named("includeRepo").get();
  124. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  125. assertThat(includeRepo).isNotNull();
  126. assertThat(checkRemote).isNotNull();
  127. }
  128. @Test
  129. void applyWhenNoBuildScanSpecifiedThenRegisterCheckRemoteTaskWithBuildScanFalse() {
  130. this.rootProject = ProjectBuilder.builder().build();
  131. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  132. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  133. (includeCheckRemoteExtension) -> {
  134. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  135. includeCheckRemoteExtension.setProperty("ref", "main");
  136. });
  137. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  138. assertThat(checkRemote).isNotNull();
  139. assertThat(checkRemote.getStartParameter().isBuildScan()).isFalse();
  140. }
  141. @Test
  142. void applyWhenBuildScanTrueThenRegisterCheckRemoteTaskWithBuildScanTrue() {
  143. this.rootProject = ProjectBuilder.builder().build();
  144. this.rootProject.getPluginManager().apply(IncludeCheckRemotePlugin.class);
  145. this.rootProject.getExtensions().configure(IncludeCheckRemotePlugin.IncludeCheckRemoteExtension.class,
  146. (includeCheckRemoteExtension) -> {
  147. includeCheckRemoteExtension.setProperty("repository", "my-project/my-repository");
  148. includeCheckRemoteExtension.setProperty("ref", "main");
  149. includeCheckRemoteExtension.setProperty("buildScan", true);
  150. });
  151. GradleBuild checkRemote = (GradleBuild) this.rootProject.getTasks().named("checkRemote").get();
  152. assertThat(checkRemote).isNotNull();
  153. assertThat(checkRemote.getStartParameter().isBuildScan()).isTrue();
  154. }
  155. }