| @@ -1,2 +1,3 | |||||
| 1 | group=org.implab.gradle |
|
1 | group=org.implab.gradle | |
| 2 | version=0.1.0 |
|
2 | version=0.1.0 | |
|
|
3 | testMinGradleVersion=8.10.2 | |||
| @@ -36,6 +36,18 test { | |||||
| 36 | useJUnitPlatform() |
|
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 | javadoc { |
|
51 | javadoc { | |
| 40 | exclude "**/internal/**" |
|
52 | exclude "**/internal/**" | |
| 41 | } |
|
53 | } | |
| @@ -13,6 +13,7 import java.util.regex.Pattern; | |||||
| 13 |
|
13 | |||
| 14 | import org.gradle.testkit.runner.GradleRunner; |
|
14 | import org.gradle.testkit.runner.GradleRunner; | |
| 15 | import org.gradle.testkit.runner.UnexpectedBuildFailure; |
|
15 | import org.gradle.testkit.runner.UnexpectedBuildFailure; | |
|
|
16 | import org.gradle.util.GradleVersion; | |||
| 16 | import org.implab.gradle.common.core.lang.Deferred; |
|
17 | import org.implab.gradle.common.core.lang.Deferred; | |
| 17 | import org.implab.gradle.variants.sources.GenericSourceSet; |
|
18 | import org.implab.gradle.variants.sources.GenericSourceSet; | |
| 18 | import org.junit.jupiter.api.io.TempDir; |
|
19 | import org.junit.jupiter.api.io.TempDir; | |
| @@ -20,6 +21,7 import org.junit.jupiter.api.io.TempDir; | |||||
| 20 | abstract class AbstractFunctionalTest { |
|
21 | abstract class AbstractFunctionalTest { | |
| 21 | private static final String SETTINGS_FILE = "settings.gradle"; |
|
22 | private static final String SETTINGS_FILE = "settings.gradle"; | |
| 22 | private static final String BUILD_FILE = "build.gradle"; |
|
23 | private static final String BUILD_FILE = "build.gradle"; | |
|
|
24 | private static final String TEST_GRADLE_VERSION_PROPERTY = "org.implab.gradle.test.gradleVersion"; | |||
| 23 | private static final Pattern INCLUDE_DECLARATION = Pattern.compile("^include(?:\\s|\\().*"); |
|
25 | private static final Pattern INCLUDE_DECLARATION = Pattern.compile("^include(?:\\s|\\().*"); | |
| 24 | private static final Pattern QUOTED_LITERAL = Pattern.compile("['\"]([^'\"]+)['\"]"); |
|
26 | private static final Pattern QUOTED_LITERAL = Pattern.compile("['\"]([^'\"]+)['\"]"); | |
| 25 |
|
27 | |||
| @@ -35,10 +37,23 abstract class AbstractFunctionalTest { | |||||
| 35 | } |
|
37 | } | |
| 36 |
|
38 | |||
| 37 | protected GradleRunner runner(String... arguments) { |
|
39 | protected GradleRunner runner(String... arguments) { | |
| 38 |
|
|
40 | var runner = GradleRunner.create() | |
| 39 | .withProjectDir(testProjectDir.toFile()) |
|
41 | .withProjectDir(testProjectDir.toFile()) | |
| 40 | .withArguments(arguments) |
|
42 | .withArguments(arguments) | |
| 41 | .forwardOutput(); |
|
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 | protected void assertBuildFails(String expectedError, String... arguments) { |
|
59 | protected void assertBuildFails(String expectedError, String... arguments) { | |
| @@ -103,7 +103,7 class VariantArtifactsPluginFunctionalTe | |||||
| 103 | } |
|
103 | } | |
| 104 |
|
104 | |||
| 105 | @Test |
|
105 | @Test | |
| 106 |
void gradleReferenceRegisteredSecondaryArtifactVariant |
|
106 | void gradleReferenceRegisteredSecondaryArtifactVariantMatchesGradleBehavior() throws Exception { | |
| 107 | writeFile("settings.gradle", """ |
|
107 | writeFile("settings.gradle", """ | |
| 108 | rootProject.name = 'gradle-reference-registered-secondary-variant' |
|
108 | rootProject.name = 'gradle-reference-registered-secondary-variant' | |
| 109 | include 'producer', 'consumer' |
|
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")); |
|
173 | assertTrue(result.getOutput().contains("compileFiles=typesPackage")); | |
| 170 | assertTrue(result.getOutput().contains("jsFiles=js")); |
|
174 | assertTrue(result.getOutput().contains("jsFiles=js")); | |
|
|
175 | } | |||
| 171 | } |
|
176 | } | |
| 172 |
|
177 | |||
| 173 | @Test |
|
178 | @Test | |
General Comments 0
You need to be logged in to leave comments.
Login now
