11package tests
22
3- import java .nio .file .Files
4- import java .nio .file .StandardOpenOption
3+ import tests .GradleBuildToolSuite ._
54
6- import munit .TestOptions
7-
8- class GradleBuildToolSuite extends BaseBuildToolSuite {
5+ class Gradle_8_BuildToolSuite extends GradleBuildToolSuite (List (Gradle8 ))
6+ class Gradle_7_BuildToolSuite extends GradleBuildToolSuite (List (Gradle7 ))
7+ class Gradle_6_BuildToolSuite extends GradleBuildToolSuite (List (Gradle67 ))
8+ class Gradle_5_BuildToolSuite extends GradleBuildToolSuite (List (Gradle5 ))
99
10+ object GradleBuildToolSuite {
1011 val Gradle8 = " 8.1.1"
1112 val Gradle7 = " 7.6.1"
1213 val Gradle67 = " 6.7" // Introduced toolchains
1314 val Gradle5 = " 5.6.4"
15+ }
1416
15- val allGradle = List (Gradle8 , Gradle7 , Gradle67 )
17+ abstract class GradleBuildToolSuite (allGradle : List [String ])
18+ extends GradleBuildToolSuiteBase (allGradle) {
1619 val allJava = List (" 8" , " 11" , " 17" )
1720
18- def gradleVersion (version : String ): List [String ] = {
19- createEmptyBuildScript()
20- List (" gradle" , " wrapper" , " --gradle-version" , version)
21- }
22-
23- def createEmptyBuildScript (): Unit = {
24- val script = workingDirectory.resolve(" build.gradle" )
25- Files .createDirectories(script.getParent)
26- Files .write(
27- script,
28- Array .emptyByteArray,
29- StandardOpenOption .TRUNCATE_EXISTING ,
30- StandardOpenOption .CREATE
31- )
32- }
33-
34- def checkGradleBuild (
35- title : TestOptions ,
36- setup : String ,
37- gradleVersions : List [String ] = allGradle,
38- expectedSemanticdbFiles : Int = 0 ,
39- expectedPackages : String = " " ,
40- extraArguments : List [String ] = Nil
41- ) = {
42- gradleVersions.foreach { gradleV =>
43- {
44- val testName = title.withName(title.name + s " -gradle $gradleV" )
45- checkBuild(
46- if (gradleV.startsWith(" 6." ) || gradleV.startsWith(" 5." ))
47- testName.tag(Java8Only )
48- else
49- testName,
50- setup,
51- expectedSemanticdbFiles = expectedSemanticdbFiles,
52- expectedPackages = expectedPackages,
53- initCommand = gradleVersion(gradleV),
54- extraArguments = extraArguments
55- )
56- }
57- }
58- }
21+ checkGradleBuild(
22+ " annotation-path" ,
23+ """ |/build.gradle
24+ |plugins {
25+ | id 'java'
26+ |}
27+ |repositories {
28+ | // Use Maven Central for resolving dependencies.
29+ | mavenCentral()
30+ |}
31+ |dependencies {
32+ | compileOnly 'org.immutables:value:2.9.2'
33+ | annotationProcessor 'org.immutables:value:2.9.2'
34+ |}
35+ |/src/main/java/WorkflowOptions.java
36+ |package test;
37+ |import org.immutables.value.Value;
38+ |import java.util.Optional;
39+ |@Value.Immutable
40+ |public abstract class WorkflowOptions {
41+ | public abstract Optional<String> getWorkflowIdReusePolicy();
42+ |}
43+ """ .stripMargin,
44+ /*
45+ An immutable version will be generated along with the original class:
46+ - build/generated/sources/annotationProcessor/java/main/test/ImmutableWorkflowOptions.java.semanticdb
47+ - /META-INF/semanticdb/src/main/java/WorkflowOptions.java.semanticdb
48+ */
49+ expectedSemanticdbFiles = 2 ,
50+ gradleVersions = List (Gradle8 , Gradle7 , Gradle67 )
51+ )
5952
6053 // This is the most basic test for Java/Scala support
6154 // We run it for an extended list of Gradle versions
@@ -110,25 +103,10 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
110103 |case class Howdy(a: Int)
111104 |""" .stripMargin,
112105 expectedSemanticdbFiles = 3 ,
113- gradleVersions = allGradle :+ Gradle5
106+ // Only add this test on Gradle 5 in the gradle 6 suite
107+ gradleVersions = List (Gradle8 , Gradle7 , Gradle67 , Gradle5 )
114108 )
115109
116- List (" 3.3" , " 2.2.1" ).foreach { version =>
117- checkBuild(
118- s " legacy- $version" .tag(Java8Only ),
119- s """ |/build.gradle
120- |apply plugin: 'java'
121- |/src/main/java/Example.java
122- |public class Example {}
123- |/src/test/java/ExampleSuite.java
124- |public class ExampleSuite {}
125- | """ .stripMargin,
126- expectedSemanticdbFiles = 2 ,
127- initCommand = gradleVersion(version)
128- // NOTE(olafur): no packages because we use more modern APIs.
129- )
130- }
131-
132110 allJava.foreach { java =>
133111 checkGradleBuild(
134112 if (java == " 8" )
@@ -145,7 +123,8 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
145123 |/src/main/java/Example.java
146124 |public class Example {}
147125 | """ .stripMargin,
148- expectedSemanticdbFiles = 1
126+ expectedSemanticdbFiles = 1 ,
127+ gradleVersions = List (Gradle8 , Gradle7 , Gradle67 )
149128 )
150129 }
151130
@@ -161,7 +140,8 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
161140 |<hello/>
162141 |""" .stripMargin,
163142 expectedSemanticdbFiles = 2 ,
164- extraArguments = List (" --build-tool" , " gradle" )
143+ extraArguments = List (" --build-tool" , " gradle" ),
144+ gradleVersions = List (Gradle8 , Gradle7 , Gradle67 )
165145 )
166146
167147 checkGradleBuild(
@@ -174,10 +154,11 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
174154 |public class ExampleSuite {}
175155 |""" .stripMargin,
176156 expectedSemanticdbFiles = 1 ,
177- extraArguments = List (" --" , " compileJava" )
157+ extraArguments = List (" --" , " compileJava" ),
158+ gradleVersions = List (Gradle8 , Gradle7 , Gradle67 )
178159 )
179160
180- checkBuild (
161+ checkGradleBuild (
181162 " playframework" .tag(Java8Only ),
182163 """ |/build.gradle
183164 |plugins {
@@ -226,10 +207,10 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
226207 |""" .stripMargin,
227208 expectedSemanticdbFiles =
228209 2 , // Two files because `conf/routes` generates a Java file.
229- initCommand = gradleVersion( " 6.8 " )
210+ gradleVersions = List ( Gradle67 )
230211 )
231212
232- checkBuild (
213+ checkGradleBuild (
233214 " checkerframework" .tag(Java8Only ),
234215 """ |/build.gradle
235216 |plugins {
@@ -251,8 +232,8 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
251232 |package foo;
252233 |public class ExampleSuite {}
253234 |""" .stripMargin,
254- 2 ,
255- initCommand = gradleVersion( " 6.8.3 " )
235+ expectedSemanticdbFiles = 2 ,
236+ gradleVersions = List ( Gradle67 )
256237 )
257238
258239 checkGradleBuild(
@@ -280,9 +261,9 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
280261 |package foo
281262 |class ExampleSuite {}
282263 |""" .stripMargin,
283- expectedSemanticdbFiles = 4
264+ expectedSemanticdbFiles = 4 ,
265+ gradleVersions = List (Gradle8 , Gradle7 , Gradle67 )
284266 )
285-
286267 checkGradleBuild(
287268 " kotlin" ,
288269 """ |/build.gradle
@@ -351,7 +332,8 @@ class GradleBuildToolSuite extends BaseBuildToolSuite {
351332 |maven:org.jetbrains.kotlin:kotlin-stdlib:1.6.20
352333 |maven:org.jetbrains:annotations:13.0
353334 |maven:org.slf4j:slf4j-api:1.7.36
354- |""" .stripMargin
335+ |""" .stripMargin,
336+ gradleVersions = List (Gradle8 , Gradle7 , Gradle67 )
355337 )
356338
357339 List (" 8" , " 11" ).foreach { java =>
0 commit comments