Skip to content

Commit 022b8f4

Browse files
committed
test with cross-compile Groovy 4 & 5
1 parent 9843c58 commit 022b8f4

File tree

6 files changed

+97
-57
lines changed

6 files changed

+97
-57
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package hello
2+
3+
class Hello {
4+
5+
static String getHelloString() {
6+
return "Hello, world!"
7+
}
8+
9+
static String sayHello(String name){
10+
return "Hello, $name"
11+
}
12+
13+
static void main(String[] args) {
14+
println(getHelloString())
15+
}
16+
}

libs/groovylib/test/src/mill/groovylib/HelloGroovyTests.scala

Lines changed: 81 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ import utest.*
1010
object HelloGroovyTests extends TestSuite {
1111

1212
val groovy4Version = "4.0.28"
13+
val groovy5Version = "5.0.1"
14+
val groovyVersions = Seq(groovy4Version, groovy5Version)
1315
val junit5Version = sys.props.getOrElse("TEST_JUNIT5_VERSION", "5.13.4")
1416
val spockGroovy4Version = "2.3-groovy-4.0"
1517

1618
object HelloGroovy extends TestRootModule {
1719

20+
trait GroovyVersionCross extends GroovyModule with Cross.Module[String]{
21+
override def groovyVersion: Task.Simple[String] = crossValue
22+
}
23+
1824
lazy val millDiscover = Discover[this.type]
1925

2026
// needed for a special test where only the tests are written in Groovy while appcode remains Java
@@ -32,11 +38,22 @@ object HelloGroovyTests extends TestSuite {
3238

3339
}
3440

35-
object `joint-compile` extends GroovyModule {
41+
/**
42+
* Currently Spock does not support Groovy 5, so that's why it's currently
43+
* pulled out of the cross compilation.
44+
*/
45+
object spock extends GroovyModule {
3646
override def groovyVersion: T[String] = groovy4Version
37-
override def mainClass = Some("jointcompile.JavaMain")
47+
48+
object tests extends GroovyTests with TestModule.Spock {
49+
override def jupiterVersion: T[String] = junit5Version
50+
override def spockVersion: T[String] = spockGroovy4Version
51+
}
3852
}
3953

54+
/**
55+
* Test to verify BOM-resolution only done starting with the minimal version
56+
*/
4057
object deps extends Module {
4158

4259
object groovyBom extends GroovyModule {
@@ -61,34 +78,31 @@ object HelloGroovyTests extends TestSuite {
6178

6279
}
6380

64-
trait Test extends GroovyModule {
81+
trait Test extends GroovyVersionCross {
6582

6683
override def mainClass = Some("hello.Hello")
6784

68-
object test extends GroovyTests with TestModule.Junit5 {
69-
override def jupiterVersion: T[String] = junit5Version
70-
override def junitPlatformVersion = "1.13.4"
71-
}
72-
7385
object script extends GroovyModule {
74-
override def groovyVersion: T[String] = groovy4Version
86+
override def groovyVersion: T[String] = crossValue
7587
override def mainClass = Some("HelloScript")
7688
}
7789

7890
object staticcompile extends GroovyModule {
79-
override def groovyVersion: T[String] = groovy4Version
91+
override def groovyVersion: T[String] = crossValue
8092
override def mainClass = Some("hellostatic.HelloStatic")
8193
}
8294

83-
object spock extends GroovyTests with TestModule.Spock {
95+
object `joint-compile` extends GroovyModule {
96+
override def groovyVersion: T[String] = crossValue
97+
override def mainClass = Some("jointcompile.JavaMain")
98+
}
99+
100+
object test extends GroovyTests with TestModule.Junit5 {
84101
override def jupiterVersion: T[String] = junit5Version
85-
override def spockVersion: T[String] = spockGroovy4Version
86-
override def groovyVersion: T[String] = groovy4Version
102+
override def junitPlatformVersion = "1.13.4"
87103
}
88104
}
89-
object main extends Test {
90-
override def groovyVersion: T[String] = groovy4Version
91-
}
105+
object main extends Cross[Test](groovyVersions)
92106
}
93107

94108
val resourcePath = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "hello-groovy"
@@ -100,58 +114,84 @@ object HelloGroovyTests extends TestSuite {
100114

101115
def tests: Tests = Tests {
102116

103-
def m = HelloGroovy.main
117+
def main = HelloGroovy.main
118+
def spock = HelloGroovy.spock
104119
def mixed = HelloGroovy.`groovy-tests`
105-
def joint = HelloGroovy.`joint-compile`
106120
def deps = HelloGroovy.deps
107121

108122
test("running a Groovy script") {
109123
testEval().scoped { eval =>
110-
val Right(_) = eval.apply(m.script.run()): @unchecked
124+
main.crossModules.foreach(m => {
125+
val Right(_) = eval.apply(m.script.run()): @unchecked
126+
})
111127
}
112128
}
113129

114130
test("running a Groovy script") {
115131
testEval().scoped { eval =>
116-
val Right(_) = eval.apply(m.script.run()): @unchecked
132+
main.crossModules.foreach(m => {
133+
val Right(_) = eval.apply(m.script.run()): @unchecked
134+
})
117135
}
118136
}
119137

120138
test("compile & run Groovy module") {
121139
testEval().scoped { eval =>
122-
val Right(result) = eval.apply(m.compile): @unchecked
140+
main.crossModules.foreach(m => {
141+
val Right(result) = eval.apply(m.compile): @unchecked
123142

124-
assert(
125-
os.walk(result.value.classes.path).exists(_.last == "Hello.class")
126-
)
143+
assert(
144+
os.walk(result.value.classes.path).exists(_.last == "Hello.class")
145+
)
127146

128-
val Right(_) = eval.apply(m.run()): @unchecked
147+
val Right(_) = eval.apply(m.run()): @unchecked
148+
})
129149
}
130150
}
131151

132152
test("compile & run Groovy JUnit5 test") {
133153
testEval().scoped { eval =>
154+
main.crossModules.foreach(m => {
155+
val Right(result) = eval.apply(m.test.compile): @unchecked
134156

135-
val Right(result) = eval.apply(m.test.compile): @unchecked
157+
assert(
158+
os.walk(result.value.classes.path).exists(_.last == "HelloTest.class")
159+
)
136160

137-
assert(
138-
os.walk(result.value.classes.path).exists(_.last == "HelloTest.class")
139-
)
140-
141-
val Right(discovered) = eval.apply(m.test.discoveredTestClasses): @unchecked
142-
assert(discovered.value == Seq("hello.tests.HelloTest"))
161+
val Right(discovered) = eval.apply(m.test.discoveredTestClasses): @unchecked
162+
assert(discovered.value == Seq("hello.tests.HelloTest"))
143163

144-
val Right(_) = eval.apply(m.test.testForked()): @unchecked
164+
val Right(_) = eval.apply(m.test.testForked()): @unchecked
165+
})
145166
}
146167
}
147168

148169
test("compile & run a statically compiled Groovy") {
149170
testEval().scoped { eval =>
150-
val Right(result) = eval.apply(m.staticcompile.compile): @unchecked
151-
assert(
152-
os.walk(result.value.classes.path).exists(_.last == "HelloStatic.class")
153-
)
154-
val Right(_) = eval.apply(m.staticcompile.run()): @unchecked
171+
main.crossModules.foreach(m => {
172+
val Right(result) = eval.apply(m.staticcompile.compile): @unchecked
173+
assert(
174+
os.walk(result.value.classes.path).exists(_.last == "HelloStatic.class")
175+
)
176+
val Right(_) = eval.apply(m.staticcompile.run()): @unchecked
177+
})
178+
}
179+
}
180+
181+
test("compile joint (groovy <-> java cycle) & run") {
182+
testEval().scoped { eval =>
183+
main.crossModules.foreach(m => {
184+
val Right(result) = eval.apply(m.`joint-compile`.compile): @unchecked
185+
186+
assert(
187+
os.walk(result.value.classes.path).exists(_.last == "JavaPrinter.class")
188+
)
189+
assert(
190+
os.walk(result.value.classes.path).exists(_.last == "GroovyGreeter.class")
191+
)
192+
193+
val Right(_) = eval.apply(m.`joint-compile`.run()): @unchecked
194+
})
155195
}
156196
}
157197

@@ -168,31 +208,15 @@ object HelloGroovyTests extends TestSuite {
168208

169209
test("compile & run Spock test") {
170210
testEval().scoped { eval =>
171-
172-
val Right(result1) = eval.apply(m.spock.compile): @unchecked
211+
val Right(result1) = eval.apply(spock.tests.compile): @unchecked
173212
assert(
174213
os.walk(result1.value.classes.path).exists(_.last == "SpockTest.class")
175214
)
176215

177-
val Right(discovered) = eval.apply(m.spock.discoveredTestClasses): @unchecked
216+
val Right(discovered) = eval.apply(spock.tests.discoveredTestClasses): @unchecked
178217
assert(discovered.value == Seq("hello.spock.SpockTest"))
179218

180-
val Right(_) = eval.apply(m.spock.testForked()): @unchecked
181-
}
182-
}
183-
184-
test("compile joint (groovy <-> java cycle) & run") {
185-
testEval().scoped { eval =>
186-
val Right(result) = eval.apply(joint.compile): @unchecked
187-
188-
assert(
189-
os.walk(result.value.classes.path).exists(_.last == "JavaPrinter.class")
190-
)
191-
assert(
192-
os.walk(result.value.classes.path).exists(_.last == "GroovyGreeter.class")
193-
)
194-
195-
val Right(_) = eval.apply(joint.run()): @unchecked
219+
val Right(_) = eval.apply(spock.tests.testForked()): @unchecked
196220
}
197221
}
198222

0 commit comments

Comments
 (0)