##// END OF EJS Templates
Add minimum Gradle compatibility functional test
cin -
r63:79fd940a7856 tip default
parent child
Show More
@@ -1,2 +1,3
1 1 group=org.implab.gradle
2 2 version=0.1.0
3 testMinGradleVersion=8.10.2
@@ -36,6 +36,18 test {
36 36 useJUnitPlatform()
37 37 }
38 38
39 tasks.register("minGradleCompatibilityTest", Test) {
40 description = "Runs functional TestKit tests against the minimum supported Gradle version."
41 group = "verification"
42 useJUnitPlatform()
43 testClassesDirs = sourceSets.test.output.classesDirs
44 classpath = sourceSets.test.runtimeClasspath
45 include "**/*FunctionalTest.class"
46 systemProperty "org.implab.gradle.test.gradleVersion", providers.gradleProperty("testMinGradleVersion").get()
47 inputs.property("testMinGradleVersion", providers.gradleProperty("testMinGradleVersion"))
48 shouldRunAfter test
49 }
50
39 51 javadoc {
40 52 exclude "**/internal/**"
41 53 }
@@ -13,6 +13,7 import java.util.regex.Pattern;
13 13
14 14 import org.gradle.testkit.runner.GradleRunner;
15 15 import org.gradle.testkit.runner.UnexpectedBuildFailure;
16 import org.gradle.util.GradleVersion;
16 17 import org.implab.gradle.common.core.lang.Deferred;
17 18 import org.implab.gradle.variants.sources.GenericSourceSet;
18 19 import org.junit.jupiter.api.io.TempDir;
@@ -20,6 +21,7 import org.junit.jupiter.api.io.TempDir;
20 21 abstract class AbstractFunctionalTest {
21 22 private static final String SETTINGS_FILE = "settings.gradle";
22 23 private static final String BUILD_FILE = "build.gradle";
24 private static final String TEST_GRADLE_VERSION_PROPERTY = "org.implab.gradle.test.gradleVersion";
23 25 private static final Pattern INCLUDE_DECLARATION = Pattern.compile("^include(?:\\s|\\().*");
24 26 private static final Pattern QUOTED_LITERAL = Pattern.compile("['\"]([^'\"]+)['\"]");
25 27
@@ -35,10 +37,23 abstract class AbstractFunctionalTest {
35 37 }
36 38
37 39 protected GradleRunner runner(String... arguments) {
38 return GradleRunner.create()
40 var runner = GradleRunner.create()
39 41 .withProjectDir(testProjectDir.toFile())
40 42 .withArguments(arguments)
41 43 .forwardOutput();
44
45 var gradleVersion = System.getProperty(TEST_GRADLE_VERSION_PROPERTY);
46 if (gradleVersion != null && !gradleVersion.isBlank())
47 runner = runner.withGradleVersion(gradleVersion);
48
49 return runner;
50 }
51
52 protected GradleVersion targetGradleVersion() {
53 var gradleVersion = System.getProperty(TEST_GRADLE_VERSION_PROPERTY);
54 if (gradleVersion == null || gradleVersion.isBlank())
55 return GradleVersion.current();
56 return GradleVersion.version(gradleVersion);
42 57 }
43 58
44 59 protected void assertBuildFails(String expectedError, String... arguments) {
@@ -103,7 +103,7 class VariantArtifactsPluginFunctionalTe
103 103 }
104 104
105 105 @Test
106 void gradleReferenceRegisteredSecondaryArtifactVariantAllowsSecondaryArtifactSelection() throws Exception {
106 void gradleReferenceRegisteredSecondaryArtifactVariantMatchesGradleBehavior() throws Exception {
107 107 writeFile("settings.gradle", """
108 108 rootProject.name = 'gradle-reference-registered-secondary-variant'
109 109 include 'producer', 'consumer'
@@ -164,10 +164,15 class VariantArtifactsPluginFunctionalTe
164 164 }
165 165 """);
166 166
167 BuildResult result = runner(":consumer:probe").build();
167 if (targetGradleVersion().compareTo(org.gradle.util.GradleVersion.version("9.4.1")) < 0) {
168 assertBuildFails("Cannot create variant 'js' after dependency configuration ':producer:browserElements' has been resolved",
169 ":consumer:probe");
170 } else {
171 BuildResult result = runner(":consumer:probe").build();
168 172
169 assertTrue(result.getOutput().contains("compileFiles=typesPackage"));
170 assertTrue(result.getOutput().contains("jsFiles=js"));
173 assertTrue(result.getOutput().contains("compileFiles=typesPackage"));
174 assertTrue(result.getOutput().contains("jsFiles=js"));
175 }
171 176 }
172 177
173 178 @Test
General Comments 0
You need to be logged in to leave comments. Login now