@@ -2,7 +2,7 @@ package mill
22package groovylib
33
44import mill .javalib .{JavaModule , TestModule }
5- import mill .api .{ Task }
5+ import mill .api .Task
66import mill .api .Discover
77import mill .testkit .{TestRootModule , UnitTester }
88import utest .*
@@ -11,6 +11,7 @@ object HelloGroovyTests extends TestSuite {
1111
1212 val groovy4Version = " 4.0.28"
1313 val junit5Version = sys.props.getOrElse(" TEST_JUNIT5_VERSION" , " 5.13.4" )
14+ val spockGroovy4Version = " 2.3-groovy-4.0"
1415
1516 object HelloGroovy extends TestRootModule {
1617
@@ -25,12 +26,8 @@ object HelloGroovyTests extends TestSuite {
2526 HelloGroovy .`groovy-tests`
2627 )
2728
28- override def groovyVersion = groovy4Version
29- override def depManagement = Seq (
30- mvn " org.junit.jupiter:junit-jupiter-engine: $junit5Version"
31- )
32- override def jupiterVersion = junit5Version
33- override def junitPlatformVersion = " 1.13.4"
29+ override def groovyVersion : T [String ] = groovy4Version
30+ override def jupiterVersion : T [String ] = junit5Version
3431 }
3532
3633 }
@@ -39,39 +36,54 @@ object HelloGroovyTests extends TestSuite {
3936 override def groovyVersion : T [String ] = groovy4Version
4037 override def mainClass = Some (" jointcompile.JavaMain" )
4138 }
39+
40+ object deps extends Module {
41+
42+ object groovyBom extends GroovyModule {
43+ override def groovyVersion : T [String ] = groovy4Version
44+ }
45+
46+ object groovyNoBom extends GroovyModule {
47+ // Groovy-BOM available starting with 4.0.26
48+ override def groovyVersion : T [String ] = " 4.0.25"
49+ }
50+
51+ object `spockBom` extends GroovyModule with TestModule .Spock {
52+ override def spockVersion : T [String ] = spockGroovy4Version
53+ override def groovyVersion : T [String ] = groovy4Version
54+ }
55+
56+ object `spockNoBom` extends GroovyModule with TestModule .Spock {
57+ // Groovy-BOM available starting with 2.3
58+ override def spockVersion : T [String ] = " 2.2-groovy-4.0"
59+ override def groovyVersion : T [String ] = groovy4Version
60+ }
61+
62+ }
4263
4364 trait Test extends GroovyModule {
4465
4566 override def mainClass = Some (" hello.Hello" )
4667
4768 object test extends GroovyTests with TestModule .Junit5 {
48- override def depManagement = Seq (
49- mvn " org.junit.jupiter:junit-jupiter-engine:5.13.4 "
50- )
51- override def jupiterVersion = " 5.13.4"
69+ override def jupiterVersion : T [String ] = junit5Version
5270 override def junitPlatformVersion = " 1.13.4"
5371 }
5472
5573 object script extends GroovyModule {
56- override def groovyVersion = " 4.0.28 "
74+ override def groovyVersion : T [ String ] = groovy4Version
5775 override def mainClass = Some (" HelloScript" )
5876 }
5977
6078 object staticcompile extends GroovyModule {
61- override def groovyVersion = " 4.0.28 "
79+ override def groovyVersion : T [ String ] = groovy4Version
6280 override def mainClass = Some (" hellostatic.HelloStatic" )
6381 }
6482
6583 object spock extends GroovyTests with TestModule .Spock {
66- override def junitPlatformVersion = " 1.13.4"
67- override def spockVersion = " 2.3-groovy-4.0"
68- override def groovyVersion = " 4.0.28"
69-
70- def bomMvnDeps = Seq (
71- mvn " org.junit:junit-bom:5.13.4 " ,
72- // mvn"org.apache.groovy:groovy-bom:${groovyVersion()}",
73- mvn " org.spockframework:spock-bom: ${spockVersion()}"
74- )
84+ override def jupiterVersion : T [String ] = junit5Version
85+ override def spockVersion : T [String ] = spockGroovy4Version
86+ override def groovyVersion : T [String ] = groovy4Version
7587 }
7688 }
7789 object main extends Test {
@@ -91,6 +103,7 @@ object HelloGroovyTests extends TestSuite {
91103 def m = HelloGroovy .main
92104 def mixed = HelloGroovy .`groovy-tests`
93105 def joint = HelloGroovy .`joint-compile`
106+ def deps = HelloGroovy .deps
94107
95108 test(" running a Groovy script" ) {
96109 testEval().scoped { eval =>
@@ -182,6 +195,58 @@ object HelloGroovyTests extends TestSuite {
182195 val Right (_) = eval.apply(joint.run()): @ unchecked
183196 }
184197 }
185-
198+
199+ test(" dependency management" ){
200+
201+ test(" groovy" ){
202+
203+ val groovyBom = mvn " org.apache.groovy:groovy-bom: $groovy4Version"
204+
205+ test(" groovy bom is added when version is at least 4.0.26" ) {
206+ testEval().scoped { eval =>
207+ val Right (result) = eval.apply(deps.groovyBom.bomMvnDeps): @ unchecked
208+
209+ assert(
210+ result.value.contains(groovyBom)
211+ )
212+ }
213+ }
214+
215+ test(" groovy bom is NOT added when version is below 4.0.26" ) {
216+ testEval().scoped { eval =>
217+ val Right (result) = eval.apply(deps.groovyNoBom.bomMvnDeps): @ unchecked
218+
219+ assert(
220+ ! result.value.contains(groovyBom)
221+ )
222+ }
223+ }
224+ }
225+
226+ test(" spock" ) {
227+
228+ val spockBom = mvn " org.spockframework:spock-bom: $spockGroovy4Version"
229+
230+ test(" spock bom is added when version is at least 2.3" ) {
231+ testEval().scoped { eval =>
232+ val Right (result) = eval.apply(deps.spockBom.bomMvnDeps): @ unchecked
233+
234+ assert(
235+ result.value.contains(spockBom)
236+ )
237+ }
238+ }
239+
240+ test(" spock bom is NOT added when version is below 2.3" ) {
241+ testEval().scoped { eval =>
242+ val Right (result) = eval.apply(deps.spockNoBom.bomMvnDeps): @ unchecked
243+
244+ assert(
245+ ! result.value.contains(spockBom)
246+ )
247+ }
248+ }
249+ }
250+ }
186251 }
187252}
0 commit comments