Skip to content

Commit 37e5e9a

Browse files
authored
Add Groovy 6 Alpha 2 as a testing variant (#2356)
Add Groovy 6.0.0-alpha-2 to the CI matrix for early compatibility testing without shipping it in releases. Variants in the new `additionalVariantsList` run in build-and-verify, but are never passed to release-spock. - gradle.properties/libs.versions.toml: declare and pin the 6.0 variant - build.gradle/common.main.kts: 6.0 config block, Java 17 minimum, matrix wiring - Bump the compiler JDK from 11 to 17 Source fixes for Groovy 6: - Throw MissingMethodException for unknown methods via the invokeMethod fallback - Reference the current closure directly instead of via this.find() Tests: - Re-enable the with-void-methods test now that GROOVY-12045 is fixed - Track the dropped suppressed exception via @PendingFeatureIf on Groovy 6
1 parent 9cf773d commit 37e5e9a

12 files changed

Lines changed: 111 additions & 15 deletions

File tree

.github/codecov.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ codecov:
33

44
comment:
55
layout: "reach, diff, flags, files"
6-
after_n_builds: 24
6+
after_n_builds: 29

.github/workflows/branches-and-prs.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ jobs:
6363
- '3.0'
6464
- '4.0'
6565
- '5.0'
66+
- '6.0'
6667
java:
6768
- '8'
6869
- '11'
@@ -84,6 +85,12 @@ jobs:
8485
- variant: '5.0'
8586
java: '8'
8687
os: 'ubuntu-latest'
88+
- variant: '6.0'
89+
java: '8'
90+
os: 'ubuntu-latest'
91+
- variant: '6.0'
92+
java: '11'
93+
os: 'ubuntu-latest'
8794
include:
8895
- variant: '2.5'
8996
java: '8'
@@ -97,6 +104,9 @@ jobs:
97104
- variant: '5.0'
98105
java: '11'
99106
os: 'windows-latest'
107+
- variant: '6.0'
108+
java: '17'
109+
os: 'windows-latest'
100110
- variant: '2.5'
101111
java: '8'
102112
os: 'macos-latest'
@@ -109,6 +119,9 @@ jobs:
109119
- variant: '5.0'
110120
java: '11'
111121
os: 'macos-latest'
122+
- variant: '6.0'
123+
java: '17'
124+
os: 'macos-latest'
112125
steps:
113126
- id: 'step-0'
114127
name: 'Checkout Repository'

.github/workflows/common.main.kts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ data class Matrix(
107107
data class Axes(
108108
val javaVersions: List<String>,
109109
val additionalJavaTestVersions: List<String>,
110-
val variants: List<String>
110+
val variants: List<String>,
111+
val additionalVariants: List<String>
111112
)
112113

113114
data class Element(
@@ -158,19 +159,27 @@ fun WorkflowBuilder.job(
158159
val Matrix.Companion.full
159160
get() = Matrix(
160161
operatingSystems = listOf("ubuntu-latest"),
161-
variants = axes.variants,
162+
variants = axes.variants + axes.additionalVariants,
162163
javaVersions = axes.javaVersions + axes.additionalJavaTestVersions,
163164
exclude = {
164-
((variant == "2.5") && (javaVersion!!.toInt() >= 17)) ||
165-
((variant == "5.0") && (javaVersion!!.toInt() < 11))
165+
when (variant) {
166+
"2.5" -> javaVersion!!.toInt() >= 17
167+
"5.0" -> javaVersion!!.toInt() < 11
168+
"6.0" -> javaVersion!!.toInt() < 17
169+
else -> false
170+
}
166171
},
167172
includes = listOf("windows-latest", "macos-latest")
168173
.map { Matrix.Element(operatingSystem = it) }
169174
.flatMap { element ->
170-
axes.variants.map {
175+
(axes.variants + axes.additionalVariants).map {
171176
element.copy(
172177
variant = it,
173-
javaVersion = if (it == "5.0") "11" else axes.javaVersions.first()
178+
javaVersion = when (it) {
179+
"5.0" -> "11"
180+
"6.0" -> "17"
181+
else -> axes.javaVersions.first()
182+
}
174183
)
175184
}
176185
}
@@ -187,7 +196,8 @@ val Matrix.Companion.axes by lazy {
187196
Matrix.Axes(
188197
properties.getList("javaVersionsList"),
189198
properties.getList("additionalJavaTestVersionsList"),
190-
properties.getList("variantsList")
199+
properties.getList("variantsList"),
200+
properties.getList("additionalVariantsList")
191201
)
192202
}
193203
}

.github/workflows/release.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ jobs:
4040
- '3.0'
4141
- '4.0'
4242
- '5.0'
43+
- '6.0'
4344
java:
4445
- '8'
4546
- '11'
@@ -61,6 +62,12 @@ jobs:
6162
- variant: '5.0'
6263
java: '8'
6364
os: 'ubuntu-latest'
65+
- variant: '6.0'
66+
java: '8'
67+
os: 'ubuntu-latest'
68+
- variant: '6.0'
69+
java: '11'
70+
os: 'ubuntu-latest'
6471
include:
6572
- variant: '2.5'
6673
java: '8'
@@ -74,6 +81,9 @@ jobs:
7481
- variant: '5.0'
7582
java: '11'
7683
os: 'windows-latest'
84+
- variant: '6.0'
85+
java: '17'
86+
os: 'windows-latest'
7787
- variant: '2.5'
7888
java: '8'
7989
os: 'macos-latest'
@@ -86,6 +96,9 @@ jobs:
8696
- variant: '5.0'
8797
java: '11'
8898
os: 'macos-latest'
99+
- variant: '6.0'
100+
java: '17'
101+
os: 'macos-latest'
89102
steps:
90103
- id: 'step-0'
91104
name: 'Checkout Repository'

allVariants

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/bin/sh
2-
for var in 2.5 3.0 4.0 5.0; do
2+
for var in 2.5 3.0 4.0 5.0 6.0; do
33
./gradlew -Dvariant="$var" "$@"
44
done

allVariants.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
@echo off
2-
for %%v in (2.5 3.0 4.0 5.0) do (
2+
for %%v in (2.5 3.0 4.0 5.0 6.0) do (
33
gradlew.bat -Dvariant=%%v %*
44
)

build-logic/base/src/main/groovy/org/spockframework/gradle/SpockBasePlugin.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import java.time.Duration
4040
class SpockBasePlugin implements Plugin<Project> {
4141

4242
@VisibleForTesting
43-
public static final JavaLanguageVersion COMPILER_VERSION = JavaLanguageVersion.of(11)
43+
public static final JavaLanguageVersion COMPILER_VERSION = JavaLanguageVersion.of(17)
4444
public static final int COMPILER_RELEASE_VERSION = 8
4545

4646
void apply(Project project) {

build.gradle

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,17 @@ ext {
5353
}
5454
javaVersion = 11
5555
}
56+
} else if (variant == 6.0) {
57+
groovyGroup = "org.apache.groovy"
58+
groovyVersion = libs.versions.groovy6.get()
59+
minGroovyVersion = "6.0.0"
60+
maxGroovyVersion = "6.9.99"
61+
if (javaVersion < 17) {
62+
if (System.getProperty("javaVersion") != null) {
63+
throw new InvalidUserDataException("Groovy $variant is not compatible with Java $javaVersion")
64+
}
65+
javaVersion = 17
66+
}
5667
} else {
5768
throw new InvalidUserDataException("Unknown variant: $variant. Choose one of: $variants")
5869
}
@@ -238,8 +249,8 @@ if (gradle.startParameter.taskNames == ["ghActionsPublish"] || gradle.startParam
238249
}
239250

240251
if (originalStartParameterTaskNames == ["ghActionsPublish"]) {
241-
if ((javaVersion != javaVersions.min()) && ((variant != 5.0) || (javaVersion != 11))) {
242-
throw new IllegalArgumentException("ghActionsPublish can only be run on Java ${javaVersions.min()} (or 11 for variant 5.0) but was run on $javaVersion")
252+
if ((javaVersion != javaVersions.min()) && ((variant != 5.0) || (javaVersion != 11)) && ((variant != 6.0) || (javaVersion != 17))) {
253+
throw new IllegalArgumentException("ghActionsPublish can only be run on Java ${javaVersions.min()} (or 11 for variant 5.0, 17 for variant 6.0) but was run on $javaVersion")
243254
}
244255
/*
245256
We want to release only snapshots directly from master, final releases will be tagged and then published from that tag.

gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ org.gradle.caching=true
2323
javaVersionsList=8, 11, 17, 21, 25
2424
additionalJavaTestVersionsList=
2525
variantsList=2.5, 3.0, 4.0, 5.0
26+
additionalVariantsList=6.0
2627
kotlin.code.style=official

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ groovy2 = '2.5.23'
44
groovy3 = '3.0.25'
55
groovy4 = '4.0.32'
66
groovy5 = '5.0.6'
7+
groovy6 = '6.0.0-alpha-2'
78
jacoco = '0.8.15'
89
junit5 = '5.14.4'
910
junit6 = '6.1.2'
@@ -50,3 +51,4 @@ groovy-v2 = { module = "org.codehaus.groovy:groovy", version.ref="groovy2" }
5051
groovy-v3 = { module = "org.codehaus.groovy:groovy", version.ref="groovy3" }
5152
groovy-v4 = { module = "org.apache.groovy:groovy", version.ref="groovy4" }
5253
groovy-v5 = { module = "org.apache.groovy:groovy", version.ref="groovy5" }
54+
groovy-v6 = { module = "org.apache.groovy:groovy", version.ref="groovy6" }

0 commit comments

Comments
 (0)