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
}

0 commit comments

Comments
 (0)