| @@ -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 |
|
|
|
|
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 gradleReferenceRegisteredSecondaryArtifactVariant |
|
|
|
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
