Skip to content

Commit 23563b4

Browse files
authored
Move task override tracking from planning time to instantiation time (#4181)
Fixes #4176 - Make overriding of `Discover` mandatory, even in tests, so it always has useful data - Propagate `implicitMillDiscover` throughout the module hierarchy implicitly through `Ctx` - Combine `Discover#classInfo#declaredTasks#name` together with the linearization of the Scala trait hierarchy for each module, to decide whether or not a specific task is overridden or not - Added a new unit test `optionalOverride` that fails on `main` and passes on this PR Also took the opportunity to break up `TestGraphs`, `EvaluationTests` and `ResolveTests` a bit. Still pretty messy, but better than before
1 parent da7b25c commit 23563b4

File tree

138 files changed

+2801
-1988
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+2801
-1988
lines changed

bsp/src/mill/bsp/BSP.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import mill.scalalib.CoursierModule
1010

1111
object BSP extends ExternalModule with CoursierModule {
1212

13-
lazy val millDiscover: Discover = Discover[this.type]
13+
lazy val millDiscover = Discover[this.type]
1414

1515
private def bspWorkerLibs: T[Agg[PathRef]] = Task {
1616
millProjectModule("mill-bsp-worker", repositoriesTask())

bsp/worker/src/mill/bsp/worker/MillBuildServer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private class MillBuildServer(
3838

3939
import MillBuildServer._
4040

41-
lazy val millDiscover: Discover = Discover[this.type]
41+
lazy val millDiscover = Discover[this.type]
4242

4343
private[worker] var cancellator: Boolean => Unit = shutdownBefore => ()
4444
private[worker] var onSessionEnd: Option[BspServerResult => Unit] = None

contrib/bloop/src/mill/contrib/bloop/BloopImpl.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,5 +446,5 @@ class BloopImpl(evs: () => Seq[Evaluator], wd: os.Path) extends ExternalModule {
446446
}
447447
}
448448

449-
lazy val millDiscover: Discover = Discover[this.type]
449+
lazy val millDiscover = Discover[this.type]
450450
}

contrib/bloop/test/src/mill/contrib/bloop/BloopTests.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import bloop.config.{Config => BloopConfig}
44
import mill._
55
import mill.scalajslib.api.ModuleKind
66
import mill.scalalib._
7+
import mill.define.Discover
78
import mill.scalanativelib.api.ReleaseMode
89
import mill.testkit.UnitTester
910
import mill.testkit.TestBaseModule
@@ -78,6 +79,8 @@ object BloopTests extends TestSuite {
7879
def scalaVersion = "2.12.8"
7980
override def skipBloop: Boolean = true
8081
}
82+
83+
lazy val millDiscover = Discover[this.type]
8184
}
8285

8386
def readBloopConf(jsonFile: String) =

contrib/buildinfo/test/src/mill/contrib/buildinfo/BuildInfoTests.scala

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import mill.scalalib.ScalaModule
55
import mill.scalajslib.ScalaJSModule
66
import mill.testkit.UnitTester
77
import mill.testkit.TestBaseModule
8+
import mill.define.Discover
89
import os.Path
910
import utest._
1011

@@ -17,6 +18,8 @@ object BuildInfoTests extends TestSuite {
1718
def scalaVersion = scalaVersionString
1819
def buildInfoPackageName = "foo"
1920
def buildInfoMembers = Seq.empty[BuildInfo.Value]
21+
22+
lazy val millDiscover = Discover[this.type]
2023
}
2124

2225
object BuildInfoPlain extends TestBaseModule with BuildInfo with ScalaModule {
@@ -25,6 +28,8 @@ object BuildInfoTests extends TestSuite {
2528
def buildInfoMembers = Seq(
2629
BuildInfo.Value("scalaVersion", scalaVersion())
2730
)
31+
32+
lazy val millDiscover = Discover[this.type]
2833
}
2934

3035
object BuildInfoScalaJS extends TestBaseModule with BuildInfo with ScalaJSModule {
@@ -34,6 +39,8 @@ object BuildInfoTests extends TestSuite {
3439
def buildInfoMembers = Seq(
3540
BuildInfo.Value("scalaVersion", scalaVersion())
3641
)
42+
43+
lazy val millDiscover = Discover[this.type]
3744
}
3845

3946
object BuildInfoComment extends TestBaseModule with BuildInfo with ScalaModule {
@@ -51,6 +58,8 @@ object BuildInfoTests extends TestSuite {
5158
comment = "a helpful comment explaining what scalaVersion\nis all about"
5259
)
5360
)
61+
62+
lazy val millDiscover = Discover[this.type]
5463
}
5564

5665
object BuildInfoStatic extends TestBaseModule with BuildInfo with ScalaModule {
@@ -60,6 +69,8 @@ object BuildInfoTests extends TestSuite {
6069
def buildInfoMembers = Seq(
6170
BuildInfo.Value("scalaVersion", scalaVersion())
6271
)
72+
73+
lazy val millDiscover = Discover[this.type]
6374
}
6475

6576
object BuildInfoSettings extends TestBaseModule with BuildInfo with ScalaModule {
@@ -69,13 +80,17 @@ object BuildInfoTests extends TestSuite {
6980
def buildInfoMembers = Seq(
7081
BuildInfo.Value("scalaVersion", scalaVersion())
7182
)
83+
84+
lazy val millDiscover = Discover[this.type]
7285
}
7386

7487
object BuildInfoJava extends TestBaseModule with BuildInfo {
7588
def buildInfoPackageName = "foo"
7689
def buildInfoMembers = Seq(
7790
BuildInfo.Value("scalaVersion", "not-provided-for-java-modules")
7891
)
92+
93+
lazy val millDiscover = Discover[this.type]
7994
}
8095

8196
object BuildInfoJavaStatic extends TestBaseModule with BuildInfo {
@@ -84,6 +99,8 @@ object BuildInfoTests extends TestSuite {
8499
def buildInfoMembers = Seq(
85100
BuildInfo.Value("scalaVersion", "not-provided-for-java-modules")
86101
)
102+
103+
lazy val millDiscover = Discover[this.type]
87104
}
88105

89106
val testModuleSourcesPath: Path = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "buildinfo"

contrib/docker/test/src/mill/contrib/docker/DockerModuleTest.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ package contrib.docker
33

44
import mill.scalalib.JavaModule
55
import mill.api.Result
6+
import mill.define.Discover
67
import mill.util.TestUtil
78
import mill.testkit.UnitTester
89
import mill.testkit.TestBaseModule
910
import os.Path
10-
import utest._
11+
import utest.*
1112
import utest.framework.TestPath
1213

1314
object DockerModuleTest extends TestSuite {
@@ -47,6 +48,8 @@ object DockerModuleTest extends TestSuite {
4748
object dockerEnv extends DockerConfig {
4849
override def dockerEnv = Map("DOCKER_HOST" -> "wrong_host")
4950
}
51+
52+
lazy val millDiscover = Discover[this.type]
5053
}
5154

5255
val testArtifactName = "mill-docker-contrib-test"

contrib/flyway/test/src/mill/contrib/flyway/BuildTest.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package mill.contrib.flyway
22

3-
import mill._
4-
import mill.scalalib._
3+
import mill.*
4+
import mill.define.Discover
5+
import mill.scalalib.*
56
import mill.testkit.UnitTester
67
import mill.testkit.TestBaseModule
7-
import utest.{TestSuite, Tests, assert, _}
8+
import utest.{TestSuite, Tests, assert, *}
89

910
object BuildTest extends TestSuite {
11+
1012
object Build extends TestBaseModule {
1113
object build extends FlywayModule {
1214

@@ -18,6 +20,8 @@ object BuildTest extends TestSuite {
1820
def flywayUrl = "jdbc:h2:mem:test_db;DB_CLOSE_DELAY=-1"
1921
def flywayDriverDeps = Agg(h2)
2022
}
23+
24+
val millDiscover: Discover = Discover[this.type]
2125
}
2226

2327
def tests = Tests {

contrib/gitlab/test/src/mill/contrib/gitlab/GitlabModuleTests.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package mill.contrib.gitlab
22

33
import mill.{T, Task}
44
import mill.api.Result.Failure
5+
import mill.define.Discover
56
import mill.scalalib.publish.PomSettings
67
import mill.testkit.UnitTester
78
import mill.testkit.TestBaseModule
89
import utest.framework.TestPath
910
import utest.{TestSuite, Tests, assertMatch, test}
10-
11+
import mill.main.TokenReaders._
1112
object GitlabModuleTests extends TestSuite {
1213

1314
val emptyLookup = new GitlabTokenLookup {
@@ -24,6 +25,8 @@ object GitlabModuleTests extends TestSuite {
2425
override def publishVersion: T[String] = "0.0.1"
2526

2627
override def tokenLookup: GitlabTokenLookup = emptyLookup
28+
29+
lazy val millDiscover = Discover[this.type]
2730
}
2831

2932
// GitlabMavenRepository does not need to be a module, but it needs to be invoked from one.
@@ -33,6 +36,8 @@ object GitlabModuleTests extends TestSuite {
3336
InstanceRepository("https://gl.local")
3437

3538
override def tokenLookup = emptyLookup
39+
40+
lazy val millDiscover = Discover[this.type]
3641
}
3742

3843
override def tests: Tests = Tests {

contrib/jmh/test/src/mill/contrib/jmh/JmhModuleTest.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package mill
22
package contrib.jmh
33

4+
import mill.define.Discover
45
import mill.eval.EvaluatorPaths
56
import mill.scalalib.ScalaModule
67
import mill.testkit.UnitTester
78
import mill.testkit.TestBaseModule
89
import os.Path
9-
import utest._
10+
import utest.*
1011
import utest.framework.TestPath
1112

1213
object JmhModuleTest extends TestSuite {
@@ -15,6 +16,8 @@ object JmhModuleTest extends TestSuite {
1516

1617
override def scalaVersion = sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???)
1718
override def jmhCoreVersion = "1.35"
19+
20+
lazy val millDiscover = Discover[this.type]
1821
}
1922
val testModuleSourcesPath: Path = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "jmh"
2023

contrib/playlib/src/mill/playlib/RouteCompilerWorkerModule.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ trait RouteCompilerWorkerModule extends Module {
1212
private[playlib] object RouteCompilerWorkerModule
1313
extends ExternalModule
1414
with RouteCompilerWorkerModule {
15-
lazy val millDiscover: Discover = Discover[this.type]
15+
lazy val millDiscover = Discover[this.type]
1616
}

contrib/playlib/test/src/mill/playlib/PlayModuleTests.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package playlib
44
import mill.scalalib.api.ZincWorkerUtil
55
import mill.testkit.{TestBaseModule, UnitTester}
66
import utest.{TestSuite, Tests, assert, _}
7+
import mill.define.Discover
78

89
object PlayModuleTests extends TestSuite with PlayTestSuite {
910

@@ -16,6 +17,8 @@ object PlayModuleTests extends TestSuite with PlayTestSuite {
1617
object test extends PlayTests
1718
override def ivyDeps = Task { super.ivyDeps() ++ Agg(ws()) }
1819
}
20+
21+
lazy val millDiscover = Discover[this.type]
1922
}
2023
val resourcePath: os.Path = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "playmulti"
2124

contrib/playlib/test/src/mill/playlib/PlaySingleApiModuleTests.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@ package mill.playlib
33
import mill.{T, Task}
44
import mill.testkit.{TestBaseModule, UnitTester}
55
import utest.{TestSuite, Tests, assert, _}
6-
6+
import mill.define.Discover
7+
import mill.main.TokenReaders._
78
object PlaySingleApiModuleTests extends TestSuite with PlayTestSuite {
89

910
object playsingleapi extends TestBaseModule with PlayApiModule with SingleModule {
1011
override val millSourcePath = os.temp() // workaround problem in `SingleModule`
1112
override def playVersion = Task { testPlay28 }
1213
override def scalaVersion = Task { "2.13.12" }
1314
object test extends PlayTests
15+
16+
lazy val millDiscover = Discover[this.type]
1417
}
1518

1619
val resourcePath: os.Path = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "playsingleapi"

contrib/playlib/test/src/mill/playlib/PlaySingleModuleTests.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package mill.playlib
22

3+
import mill.define.Discover
34
import mill.{T, Task}
45
import mill.testkit.{TestBaseModule, UnitTester}
56
import utest.{TestSuite, Tests, assert, _}
6-
7+
import mill.main.TokenReaders._
78
object PlaySingleModuleTests extends TestSuite with PlayTestSuite {
89

910
object playsingle extends TestBaseModule with PlayModule with SingleModule {
1011
override val millSourcePath = os.temp() // workaround problem in `SingleModule`
1112
override def playVersion = Task { testPlay28 }
1213
override def scalaVersion = Task { sys.props.getOrElse("TEST_SCALA_2_13_VERSION", ???) }
1314
object test extends PlayTests
15+
16+
lazy val millDiscover = Discover[this.type]
1417
}
1518

1619
val resourcePath: os.Path = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "playsingle"

contrib/playlib/test/src/mill/playlib/RouterModuleTests.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package mill.playlib
22

33
import mill.api.Result.Failure
4-
import mill.define.Cross
4+
import mill.define.{Cross, Discover}
55
import mill.scalalib.ScalaModule
66
import mill.testkit.{TestBaseModule, UnitTester}
77
import utest.{TestSuite, Tests, assert, _}
8-
8+
import mill.main.TokenReaders._
99
object RouterModuleTests extends TestSuite with PlayTestSuite {
1010

1111
trait HelloBase extends TestBaseModule
@@ -20,6 +20,7 @@ object RouterModuleTests extends TestSuite with PlayTestSuite {
2020
def playVersion = crossValue2
2121
}
2222

23+
lazy val millDiscover = Discover[this.type]
2324
}
2425

2526
val resourceFolder = os.Path(sys.env("MILL_TEST_RESOURCE_DIR"))

contrib/proguard/test/src/mill/contrib/proguard/ProguardTests.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package mill.contrib.proguard
22

3-
import mill._
4-
import mill.define.Target
3+
import mill.*
4+
import mill.define.{Discover, Target}
55
import mill.util.Util.millProjectModule
66
import mill.scalalib.ScalaModule
77
import mill.testkit.UnitTester
88
import mill.testkit.TestBaseModule
99
import os.Path
10-
import utest._
10+
import utest.*
1111
import utest.framework.TestPath
1212

1313
object ProguardTests extends TestSuite {
@@ -22,6 +22,7 @@ object ProguardTests extends TestSuite {
2222
override def runClasspath: T[Seq[PathRef]] =
2323
Task { super.runClasspath() ++ proguardContribClasspath() }
2424

25+
lazy val millDiscover = Discover[this.type]
2526
}
2627

2728
val testModuleSourcesPath: Path = os.Path(sys.env("MILL_TEST_RESOURCE_DIR")) / "proguard"

contrib/scalapblib/src/mill/contrib/scalapblib/ScalaPBWorker.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,5 @@ trait ScalaPBWorkerApi {
126126

127127
object ScalaPBWorkerApi extends ExternalModule {
128128
def scalaPBWorker: Worker[ScalaPBWorker] = Task.Worker { new ScalaPBWorker() }
129-
lazy val millDiscover: Discover = Discover[this.type]
129+
lazy val millDiscover = Discover[this.type]
130130
}

0 commit comments

Comments
 (0)