From e99008293759d588a890013cbb51572f83117e0d Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 17:26:08 +0200 Subject: [PATCH 01/12] Add `TestModule.Utest.utestVersion` for convenience --- .../test/src/mill/scalajslib/CompileLinkTests.scala | 5 +---- .../test/src/mill/scalajslib/MultiModuleTests.scala | 3 +-- .../test/src/mill/scalajslib/NodeJSConfigTests.scala | 6 ++---- scalalib/src/mill/scalalib/TestModule.scala | 10 +++++++++- .../src/mill/scalalib/ScalaVersionsRangesTests.scala | 2 +- .../test/src/mill/scalalib/TestClassLoaderTests.scala | 6 +----- .../test/src/mill/scalalib/TestRunnerTestUtils.scala | 6 +----- .../test/src/mill/scalanativelib/CompileRunTests.scala | 6 ++---- 8 files changed, 18 insertions(+), 26 deletions(-) diff --git a/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala b/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala index f576f8f4728..6021d1e78e3 100644 --- a/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala +++ b/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala @@ -45,10 +45,7 @@ object CompileLinkTests extends TestSuite { object `test-utest` extends ScalaJSTests with TestModule.Utest { override def sources = Task.Sources { this.moduleDir / "src/utest" } - val utestVersion = if (JvmWorkerUtil.isScala3(crossScalaVersion)) "0.7.7" else "0.7.5" - override def mvnDeps = Seq( - mvn"com.lihaoyi::utest::$utestVersion" - ) + override val utestVersion = if (JvmWorkerUtil.isScala3(crossScalaVersion)) "0.7.7" else "0.7.5" } object `test-scalatest` extends ScalaJSTests with TestModule.ScalaTest { diff --git a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala b/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala index 86b7c542c06..f06f574b0b0 100644 --- a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala +++ b/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala @@ -20,8 +20,7 @@ object MultiModuleTests extends TestSuite { override def moduleDeps = Seq(shared) override def mainClass = Some("Main") object test extends ScalaJSTests with TestModule.Utest { - override def mvnDeps = - Seq(mvn"com.lihaoyi::utest::${sys.props.getOrElse("TEST_UTEST_VERSION", ???)}") + override def utestVersion = sys.props.getOrElse("TEST_UTEST_VERSION", ???) } } diff --git a/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala b/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala index c5fd11dde6b..2b91e3697bf 100644 --- a/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala +++ b/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala @@ -14,7 +14,7 @@ import scala.util.Properties object NodeJSConfigTests extends TestSuite { val scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???) val scalaJSVersion = sys.props.getOrElse("TEST_SCALAJS_VERSION", ???) - val utestVersion = sys.props.getOrElse("TEST_UTEST_VERSION", ???) + val testUtestVersion = sys.props.getOrElse("TEST_UTEST_VERSION", ???) val nodeArgsEmpty = List() val nodeArgs2G = List("--max-old-space-size=2048") val nodeArgs4G = List("--max-old-space-size=4096") @@ -44,9 +44,7 @@ object NodeJSConfigTests extends TestSuite { object `test-utest` extends ScalaJSTests with TestModule.Utest { override def sources = Task.Sources { this.moduleDir / "src/utest" } - override def mvnDeps = Seq( - mvn"com.lihaoyi::utest::$utestVersion" - ) + override def utestVersion = testUtestVersion override def jsEnvConfig = Task { JsEnvConfig.NodeJs(args = nodeArgs) } } } diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index 0b619f92fa2..d38e754caf2 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -391,10 +391,18 @@ object TestModule { /** * TestModule that uses UTest Framework to run tests. - * You need to provide the utest dependencies yourself. + * You can override the [[utestVersion]] task or provide the UTest-dependency yourself. */ trait Utest extends TestModule { + /** The UTest version to use, or the empty string, if you want to provide the UTest-dependency yourself. */ + def utestVersion: T[String] = Task { "" } override def testFramework: T[String] = "utest.runner.Framework" + override def mandatoryMvnDeps: T[Seq[Dep]] = Task { + super.mandatoryMvnDeps() ++ + Seq(utestVersion()) + .filter(!_.isBlank()) + .map(v => mvn"com.lihaoyi::utest::${v.trim()}") + } } /** diff --git a/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala b/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala index 80ab5f54f8b..fa29d864b7e 100644 --- a/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala +++ b/scalalib/test/src/mill/scalalib/ScalaVersionsRangesTests.scala @@ -12,7 +12,7 @@ object ScalaVersionsRangesTests extends TestSuite { trait CoreCrossModule extends CrossScalaModule with CrossScalaVersionRanges { object test extends ScalaTests with TestModule.Utest { - def mvnDeps = Seq(mvn"com.lihaoyi::utest:0.8.5") + override def utestVersion = "0.8.5" } } diff --git a/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala b/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala index 11b16128479..ce1c2a3d6f3 100644 --- a/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala +++ b/scalalib/test/src/mill/scalalib/TestClassLoaderTests.scala @@ -12,11 +12,7 @@ object TestClassLoaderTests extends TestSuite { def scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???) object test extends ScalaTests with TestModule.Utest { - override def mvnDeps = Task { - super.mvnDeps() ++ Seq( - mvn"com.lihaoyi::utest:${sys.props.getOrElse("TEST_UTEST_VERSION", ???)}" - ) - } + override def utestVersion = sys.props.getOrElse("TEST_UTEST_VERSION", ???) } lazy val millDiscover = Discover[this.type] diff --git a/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala b/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala index a2bfd5eefc8..5da59981cd4 100644 --- a/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala +++ b/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala @@ -40,13 +40,9 @@ object TestRunnerTestUtils { def scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???) object utest extends ScalaTests with TestModule.Utest { + override def utestVersion = sys.props.getOrElse("TEST_UTEST_VERSION", ???) override def testForkGrouping = computeTestForkGrouping(discoveredTestClasses()) override def testParallelism = enableParallelism - override def mvnDeps = Task { - super.mvnDeps() ++ Seq( - mvn"com.lihaoyi::utest:${sys.props.getOrElse("TEST_UTEST_VERSION", ???)}" - ) - } } object scalatest extends ScalaTests with TestModule.ScalaTest { diff --git a/scalanativelib/test/src/mill/scalanativelib/CompileRunTests.scala b/scalanativelib/test/src/mill/scalanativelib/CompileRunTests.scala index 5723d8a7fce..1a3f60e0bc4 100644 --- a/scalanativelib/test/src/mill/scalanativelib/CompileRunTests.scala +++ b/scalanativelib/test/src/mill/scalanativelib/CompileRunTests.scala @@ -29,7 +29,7 @@ object CompileRunTests extends TestSuite { val scala213 = sys.props.getOrElse("TEST_SCALA_2_13_VERSION_FOR_SCALANATIVE_4_2", ???) val scala33 = sys.props.getOrElse("TEST_SCALA_3_3_VERSION", ???) val scalaNative05 = sys.props.getOrElse("TEST_SCALANATIVE_0_5_VERSION", ???) - val utestVersion = sys.props.getOrElse("TEST_UTEST_VERSION", ???) + val testUtestVersion = sys.props.getOrElse("TEST_UTEST_VERSION", ???) object HelloNativeWorld extends TestBaseModule { implicit object ReleaseModeToSegments @@ -58,9 +58,7 @@ object CompileRunTests extends TestSuite { object test extends ScalaNativeTests with TestModule.Utest { override def sources = Task.Sources { this.moduleDir / "src/utest" } - override def mvnDeps = super.mvnDeps() ++ Seq( - mvn"com.lihaoyi::utest::$utestVersion" - ) + override def utestVersion: Target[String] = testUtestVersion } } From 6d8c9ea824b4961bf7e2fcc01a5d03ab141442d7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 19 Apr 2025 15:48:35 +0000 Subject: [PATCH 02/12] [autofix.ci] apply automated fixes --- scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala | 3 ++- scalalib/src/mill/scalalib/TestModule.scala | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala b/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala index 6021d1e78e3..3795578b321 100644 --- a/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala +++ b/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala @@ -45,7 +45,8 @@ object CompileLinkTests extends TestSuite { object `test-utest` extends ScalaJSTests with TestModule.Utest { override def sources = Task.Sources { this.moduleDir / "src/utest" } - override val utestVersion = if (JvmWorkerUtil.isScala3(crossScalaVersion)) "0.7.7" else "0.7.5" + override val utestVersion = + if (JvmWorkerUtil.isScala3(crossScalaVersion)) "0.7.7" else "0.7.5" } object `test-scalatest` extends ScalaJSTests with TestModule.ScalaTest { diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index d38e754caf2..3f0be1aba22 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -394,6 +394,7 @@ object TestModule { * You can override the [[utestVersion]] task or provide the UTest-dependency yourself. */ trait Utest extends TestModule { + /** The UTest version to use, or the empty string, if you want to provide the UTest-dependency yourself. */ def utestVersion: T[String] = Task { "" } override def testFramework: T[String] = "utest.runner.Framework" From b6acaec3dfa01f04929441c4a929451e884908b4 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 18:54:32 +0200 Subject: [PATCH 03/12] fix --- scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala b/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala index 3795578b321..594b07e48fb 100644 --- a/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala +++ b/scalajslib/test/src/mill/scalajslib/CompileLinkTests.scala @@ -44,13 +44,13 @@ object CompileLinkTests extends TestSuite { ) object `test-utest` extends ScalaJSTests with TestModule.Utest { - override def sources = Task.Sources { this.moduleDir / "src/utest" } - override val utestVersion = + override def sources = Task.Sources { "src/utest" } + override def utestVersion = if (JvmWorkerUtil.isScala3(crossScalaVersion)) "0.7.7" else "0.7.5" } object `test-scalatest` extends ScalaJSTests with TestModule.ScalaTest { - override def sources = Task.Sources { this.moduleDir / "src/scalatest" } + override def sources = Task.Sources { "src/scalatest" } override def mvnDeps = Seq( mvn"org.scalatest::scalatest::3.1.2" ) From 3bc938f2810f32515603d03ba606f12fdc662c8b Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 18:57:18 +0200 Subject: [PATCH 04/12] Update example snippets --- example/scalalib/testing/1-test-suite/build.mill | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/example/scalalib/testing/1-test-suite/build.mill b/example/scalalib/testing/1-test-suite/build.mill index 809240649f1..9e6f4000807 100644 --- a/example/scalalib/testing/1-test-suite/build.mill +++ b/example/scalalib/testing/1-test-suite/build.mill @@ -3,9 +3,9 @@ package build import mill._, scalalib._ object foo extends ScalaModule { - def scalaVersion = "2.13.8" + def scalaVersion = "2.13.15" object test extends ScalaTests { - def mvnDeps = Seq(mvn"com.lihaoyi::utest:0.8.5") + def mvnDeps = Seq(mvn"com.lihaoyi::utest:0.8.7") def testFramework = "utest.runner.Framework" } } @@ -63,10 +63,10 @@ compiling 2 ... source... // //// SNIPPET:BUILD2 object bar extends ScalaModule { - def scalaVersion = "2.13.8" + def scalaVersion = "2.13.15" object test extends ScalaTests with TestModule.Utest { - def mvnDeps = Seq(mvn"com.lihaoyi::utest:0.8.5") + def utestVersion = "0.8.7" } } From fd7d745ca8fb2cd3af9c8efe02336b3cf73dbafc Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 18:57:44 +0200 Subject: [PATCH 05/12] Add Specs2 --- scalalib/src/mill/scalalib/TestModule.scala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index 3f0be1aba22..0d7c3f11179 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -380,13 +380,21 @@ object TestModule { /** * TestModule that uses Specs2 Framework to run tests. - * You need to provide the specs2 dependencies yourself. + * You can override the [[specs2Version]] task or provide the Specs2-dependency yourself. */ trait Specs2 extends ScalaModuleBase with TestModule { + /** The Specs2 version to use, or the empty string, if you want to provide the Specs2-dependency yourself. */ + def specs2Version: T[String] = Task{ "" } override def testFramework: T[String] = "org.specs2.runner.Specs2Framework" override def scalacOptions = Task { super.scalacOptions() ++ Seq("-Yrangepos") } + override def mandatoryMvnDeps: T[Seq[Dep]] = Task { + super.mandatoryMvnDeps() ++ + Seq(specs2Version()) + .filter(!_.isBlank()) + .map(v => mvn"org.specs2::specs2-core::${v.trim()}") + } } /** From 86faa1f621b7b9571757b5cda0a3e738b557c6d6 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 18:58:50 +0200 Subject: [PATCH 06/12] Add Junit4 --- scalalib/src/mill/scalalib/TestModule.scala | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index 0d7c3f11179..fc2307c37a7 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -286,9 +286,18 @@ object TestModule { * You may want to provide the junit dependency explicitly to use another version. */ trait Junit4 extends TestModule { + + /** The JUnit4 version to use, or empty, if you want to provide the Junit-dependency yourself. */ + def junit4Version: T[String] = Task { "" } override def testFramework: T[String] = "com.novocode.junit.JUnitFramework" override def mandatoryMvnDeps: T[Seq[Dep]] = Task { - super.mandatoryMvnDeps() ++ Seq(mvn"${mill.scalalib.api.Versions.sbtTestInterface}") + super.mandatoryMvnDeps() ++ + Seq( + mvn"${mill.scalalib.api.Versions.sbtTestInterface}" + ) ++ + Seq(junit4Version()) + .filter(!_.isBlank()) + .map(v => mvn"junit:junit:${v.trim()}") } } @@ -383,8 +392,9 @@ object TestModule { * You can override the [[specs2Version]] task or provide the Specs2-dependency yourself. */ trait Specs2 extends ScalaModuleBase with TestModule { + /** The Specs2 version to use, or the empty string, if you want to provide the Specs2-dependency yourself. */ - def specs2Version: T[String] = Task{ "" } + def specs2Version: T[String] = Task { "" } override def testFramework: T[String] = "org.specs2.runner.Specs2Framework" override def scalacOptions = Task { super.scalacOptions() ++ Seq("-Yrangepos") From c1797a5fff319fbf9ddb9a73f5aa8f914ea6e344 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 18:59:08 +0200 Subject: [PATCH 07/12] Add Munit --- scalalib/src/mill/scalalib/TestModule.scala | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index fc2307c37a7..5170c1ab222 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -426,10 +426,19 @@ object TestModule { /** * TestModule that uses MUnit to run tests. - * You need to provide the munit dependencies yourself. + * You can override the [[munitVersion]] task or provide the MUnit-dependency yourself. */ trait Munit extends TestModule { + + /** The MUnit version to use, or the empty string, if you want to provide the MUnit-dependency yourself. */ + def munitVersion: T[String] = Task { "" } override def testFramework: T[String] = "munit.Framework" + override def mandatoryMvnDeps: T[Seq[Dep]] = Task { + super.mandatoryMvnDeps() ++ + Seq(munitVersion()) + .filter(!_.isBlank()) + .map(v => mvn"org.scalameta::munit::${v.trim()}") + } } /** From a37b38bd9d014c8e2824331300e3a5d727f11d9b Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 18:59:17 +0200 Subject: [PATCH 08/12] Add Weaver --- scalalib/src/mill/scalalib/TestModule.scala | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index 5170c1ab222..20f16906a60 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -443,11 +443,20 @@ object TestModule { /** * TestModule that uses Weaver to run tests. - * You need to provide the weaver dependencies yourself. + * You can override the [[weaverVersion]] task or provide the Weaver-dependency yourself. * https://github.com/disneystreaming/weaver-test */ trait Weaver extends TestModule { + + /** The Weaver version to use, or the empty string, if you want to provide the Weaver-dependency yourself. */ + def weaverVersion: T[String] = Task { "" } override def testFramework: T[String] = "weaver.framework.CatsEffect" + override def mandatoryMvnDeps: T[Seq[Dep]] = Task { + super.mandatoryMvnDeps() ++ + Seq(weaverVersion()) + .filter(!_.isBlank()) + .map(v => mvn"com.disneystreaming::weaver-scalacheck::${v.trim()}") + } } /** From fb341253c98f9feee3073dcf0fb0bd3648edda18 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 19:09:51 +0200 Subject: [PATCH 09/12] Add TestNg --- scalalib/src/mill/scalalib/TestModule.scala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index 20f16906a60..3b2459470d1 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -270,14 +270,20 @@ object TestModule { /** * TestModule using TestNG Framework to run tests. - * You need to provide the testng dependency yourself. + * You can override the [[testngVersion]] task or provide the UTest-dependency yourself. */ trait TestNg extends TestModule { + + /** The TestNG version to use, or empty, if you want to provide the TestNG-dependency yourself. */ + def testngVersion: T[String] = Task { "" } override def testFramework: T[String] = "mill.testng.TestNGFramework" override def mandatoryMvnDeps: T[Seq[Dep]] = Task { super.mandatoryMvnDeps() ++ Seq( mvn"com.lihaoyi:mill-contrib-testng:${mill.api.BuildInfo.millVersion}" - ) + ) ++ + Seq(testngVersion()) + .filter(!_.isBlank()) + .map(v => mvn"org.testng:testng:${v.trim()}") } } From eef03134d926257ee0d60b00dc7cf3975aa97cf7 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 19:10:09 +0200 Subject: [PATCH 10/12] Add ZIO Test --- scalalib/src/mill/scalalib/TestModule.scala | 16 +++++++++++++++- .../src/mill/scalalib/TestRunnerTestUtils.scala | 8 ++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index 3b2459470d1..4f417b84431 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -467,10 +467,24 @@ object TestModule { /** * TestModule that uses ZIO Test Framework to run tests. - * You need to provide the zio-test dependencies yourself. + * You can override the [[zioTestVersion]] task or provide the Weaver-dependency yourself. */ trait ZioTest extends TestModule { + + /** The ZIO Test version to use, or the empty string, if you want to provide the ZIO Test-dependency yourself. */ + def zioTestVersion: T[String] = Task { "" } override def testFramework: T[String] = "zio.test.sbt.ZTestFramework" + override def mandatoryMvnDeps: T[Seq[Dep]] = Task { + super.mandatoryMvnDeps() ++ + Seq(zioTestVersion()) + .filter(!_.isBlank()) + .flatMap(v => + Seq( + mvn"dev.zio::zio-test:${v.trim()}", + mvn"dev.zio::zio-test-sbt:${v.trim()}" + ) + ) + } } trait ScalaCheck extends TestModule { diff --git a/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala b/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala index 5da59981cd4..5f56c3d4c62 100644 --- a/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala +++ b/scalalib/test/src/mill/scalalib/TestRunnerTestUtils.scala @@ -11,6 +11,7 @@ import sbt.testing.Status import utest.* import scala.xml.{Elem, NodeSeq, XML} +import mill.define.Target object TestRunnerTestUtils { object testrunner extends TestRunnerTestModule { @@ -77,12 +78,7 @@ object TestRunnerTestUtils { object ziotest extends ScalaTests with TestModule.ZioTest { override def testForkGrouping = computeTestForkGrouping(discoveredTestClasses()) override def testParallelism = enableParallelism - override def mvnDeps = Task { - super.mvnDeps() ++ Seq( - mvn"dev.zio::zio-test:${sys.props.getOrElse("TEST_ZIOTEST_VERSION", ???)}", - mvn"dev.zio::zio-test-sbt:${sys.props.getOrElse("TEST_ZIOTEST_VERSION", ???)}" - ) - } + override def zioTestVersion: Target[String] = sys.props.getOrElse("TEST_ZIOTEST_VERSION", ???) } } From cd637af08bf7e458a36183d12d48a90c15d63bf1 Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 19:12:59 +0200 Subject: [PATCH 11/12] Add ScalaCheck --- scalalib/src/mill/scalalib/TestModule.scala | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scalalib/src/mill/scalalib/TestModule.scala b/scalalib/src/mill/scalalib/TestModule.scala index 4f417b84431..73c05c68da7 100644 --- a/scalalib/src/mill/scalalib/TestModule.scala +++ b/scalalib/src/mill/scalalib/TestModule.scala @@ -487,8 +487,21 @@ object TestModule { } } + /** + * TestModule that uses ScalaCheck Test Framework to run tests. + * You can override the [[scalaCheckVersion]] task or provide the dependency yourself. + */ trait ScalaCheck extends TestModule { + + /** The ScalaCheck version to use, or the empty string, if you want to provide the dependency yourself. */ + def scalaCheckVersion: T[String] = Task { "" } override def testFramework: T[String] = "org.scalacheck.ScalaCheckFramework" + override def mandatoryMvnDeps: T[Seq[Dep]] = Task { + super.mandatoryMvnDeps() ++ + Seq(scalaCheckVersion()) + .filter(!_.isBlank()) + .map(v => mvn"org.scalacheck::scalacheck:${v.trim()}") + } } def handleResults( From 1a29e6a938a23c85d000e433ef1e75d1f51222cd Mon Sep 17 00:00:00 2001 From: Tobias Roeser Date: Sat, 19 Apr 2025 23:24:02 +0200 Subject: [PATCH 12/12] . --- example/scalalib/testing/1-test-suite/build.mill | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example/scalalib/testing/1-test-suite/build.mill b/example/scalalib/testing/1-test-suite/build.mill index 9e6f4000807..e0555485696 100644 --- a/example/scalalib/testing/1-test-suite/build.mill +++ b/example/scalalib/testing/1-test-suite/build.mill @@ -5,7 +5,7 @@ import mill._, scalalib._ object foo extends ScalaModule { def scalaVersion = "2.13.15" object test extends ScalaTests { - def mvnDeps = Seq(mvn"com.lihaoyi::utest:0.8.7") + def mvnDeps = Seq(mvn"com.lihaoyi::utest:0.8.5") def testFramework = "utest.runner.Framework" } } @@ -66,7 +66,7 @@ object bar extends ScalaModule { def scalaVersion = "2.13.15" object test extends ScalaTests with TestModule.Utest { - def utestVersion = "0.8.7" + def utestVersion = "0.8.5" } }