summaryrefslogtreecommitdiff
path: root/core/src/test
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-07 22:38:17 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-07 22:38:17 -0800
commit4fd5f8cdfdc924bff2f4fbc6b5d7072d530fa531 (patch)
tree6e7c85efc2b3e59f56e1d207a42dda459243982b /core/src/test
parenta30db9485048e8d6e260d5d506894bd6b41f1d72 (diff)
downloadmill-4fd5f8cdfdc924bff2f4fbc6b5d7072d530fa531.tar.gz
mill-4fd5f8cdfdc924bff2f4fbc6b5d7072d530fa531.tar.bz2
mill-4fd5f8cdfdc924bff2f4fbc6b5d7072d530fa531.zip
Generate the `Segments` list at definition time rather than discovery time, by propagating implicits throughout the tree of nested `mill.Module`s
This currently adds some annoying boilerplate to the definition of cross/abstract modules, which can probably be removed using Macros. The `Segments` mapping generated by discovery is still present and used in a few places, though it will be removed
Diffstat (limited to 'core/src/test')
-rw-r--r--core/src/test/scala/mill/define/GraphTests.scala2
-rw-r--r--core/src/test/scala/mill/define/MacroErrorTests.scala8
-rw-r--r--core/src/test/scala/mill/discover/ConsistencyTests.scala2
-rw-r--r--core/src/test/scala/mill/discover/CrossModuleTests.scala8
-rw-r--r--core/src/test/scala/mill/discover/DiscoveredTests.scala2
-rw-r--r--core/src/test/scala/mill/discover/LabelingTests.scala6
-rw-r--r--core/src/test/scala/mill/main/MainTests.scala4
-rw-r--r--core/src/test/scala/mill/util/TestGraphs.scala12
-rw-r--r--core/src/test/scala/mill/util/TestUtil.scala28
9 files changed, 33 insertions, 39 deletions
diff --git a/core/src/test/scala/mill/define/GraphTests.scala b/core/src/test/scala/mill/define/GraphTests.scala
index a850a0d2..718fd673 100644
--- a/core/src/test/scala/mill/define/GraphTests.scala
+++ b/core/src/test/scala/mill/define/GraphTests.scala
@@ -157,7 +157,7 @@ object GraphTests extends TestSuite{
Graph.transitiveTargets(OSet.from(goals))
)
val grouped = Graph.groupAroundImportantTargets(topoSorted) {
- case t: NamedTask[Any] if mapping.modulesToPaths.contains(t.owner) => t
+ case t: NamedTask[Any] => t
case t if goals.contains(t) => t
}
grouped.keyCount
diff --git a/core/src/test/scala/mill/define/MacroErrorTests.scala b/core/src/test/scala/mill/define/MacroErrorTests.scala
index 90d4e65a..a389feaa 100644
--- a/core/src/test/scala/mill/define/MacroErrorTests.scala
+++ b/core/src/test/scala/mill/define/MacroErrorTests.scala
@@ -30,7 +30,9 @@ object MacroErrorTests extends TestSuite{
}
}
""")
- assert(e.msg.contains("required: mill.define.Module"))
+ assert(e.msg.contains(
+ "Modules, Targets and Commands can only be defined within a mill Module")
+ )
}
'neg - {
@@ -72,7 +74,9 @@ object MacroErrorTests extends TestSuite{
def down = T{ TestUtil.test(left, right) }
}
""")
- assert(borkedCachedDiamond1.msg.contains("required: mill.Module"))
+ assert(borkedCachedDiamond1.msg.contains(
+ "Modules, Targets and Commands can only be defined within a mill Module")
+ )
}
}
}
diff --git a/core/src/test/scala/mill/discover/ConsistencyTests.scala b/core/src/test/scala/mill/discover/ConsistencyTests.scala
index ae66b199..47eb14ce 100644
--- a/core/src/test/scala/mill/discover/ConsistencyTests.scala
+++ b/core/src/test/scala/mill/discover/ConsistencyTests.scala
@@ -1,7 +1,7 @@
package mill.discover
-import mill.discover.Mirror.Segment.Label
+import mill.define.Segment.Label
import mill.util.TestGraphs
import utest._
diff --git a/core/src/test/scala/mill/discover/CrossModuleTests.scala b/core/src/test/scala/mill/discover/CrossModuleTests.scala
index 6ae3d622..7f5cb89c 100644
--- a/core/src/test/scala/mill/discover/CrossModuleTests.scala
+++ b/core/src/test/scala/mill/discover/CrossModuleTests.scala
@@ -2,8 +2,8 @@ package mill.discover
import mill.{Module, T}
import mill.define.Cross
-import mill.discover.Mirror.Segment
-import mill.discover.Mirror.Segment.Label
+import mill.define.Segment
+import mill.define.Segment.Label
import mill.util.TestUtil.test
import utest._
import mill.util.TestGraphs._
@@ -15,7 +15,7 @@ object CrossModuleTests extends TestSuite{
'cross - {
object outer extends TestUtil.BaseModule {
object crossed extends mill.CrossModule(CrossedModule, "2.10.6", "2.11.8", "2.12.4")
- case class CrossedModule(n: String) extends Module{
+ case class CrossedModule(n: String, ctx0: Module.Ctx) extends Module()(ctx0){
def scalaVersion = n
}
}
@@ -43,7 +43,7 @@ object CrossModuleTests extends TestSuite{
if !(platform == "native0.3" && scalaVersion == "2.10.6")
} yield (platform, scalaVersion)
object crossed extends mill.CrossModule2(CrossModule, crossMatrix:_*)
- case class CrossModule(platform: String, scalaVersion: String) extends mill.Module{
+ case class CrossModule(platform: String, scalaVersion: String, ctx0: Module.Ctx) extends mill.Module()(ctx0){
def suffix = Seq(scalaVersion, platform).filter(_.nonEmpty).map("_"+_).mkString
}
}
diff --git a/core/src/test/scala/mill/discover/DiscoveredTests.scala b/core/src/test/scala/mill/discover/DiscoveredTests.scala
index d141352e..83c92adc 100644
--- a/core/src/test/scala/mill/discover/DiscoveredTests.scala
+++ b/core/src/test/scala/mill/discover/DiscoveredTests.scala
@@ -5,7 +5,7 @@ import java.io.InputStreamReader
import ammonite.main.Router.{ArgSig, EntryPoint}
import utest._
import mill.{Module, T}
-import mill.discover.Mirror.Segment.Label
+import mill.define.Segment.Label
import mill.util.TestGraphs.{TraitWithModuleObject, nestedModule}
import mill.util.TestUtil
object DiscoveredTests extends TestSuite{
diff --git a/core/src/test/scala/mill/discover/LabelingTests.scala b/core/src/test/scala/mill/discover/LabelingTests.scala
index 595d3ad9..d1ac0536 100644
--- a/core/src/test/scala/mill/discover/LabelingTests.scala
+++ b/core/src/test/scala/mill/discover/LabelingTests.scala
@@ -1,10 +1,10 @@
package mill.discover
-import mill.define.Task
+import mill.define.{Segment, Task}
import mill.util.TestGraphs
import utest._
import Discovered.mapping
-import mill.discover.Mirror.Segment.Label
+import mill.define.Segment.Label
object LabelingTests extends TestSuite{
val tests = Tests{
@@ -16,7 +16,7 @@ object LabelingTests extends TestSuite{
def check(mapping: Discovered.Mapping[_], t: Task[_], relPath: Option[String]) = {
- val names: Seq[(Task[_], Seq[Mirror.Segment])] = mapping.targetsToSegments.toSeq
+ val names: Seq[(Task[_], Seq[Segment])] = mapping.targetsToSegments.toSeq
val nameMap = names.toMap
val targetLabel = nameMap.get(t).map(_.map{case Label(v) => v}.mkString("."))
diff --git a/core/src/test/scala/mill/main/MainTests.scala b/core/src/test/scala/mill/main/MainTests.scala
index 320731fa..013729ff 100644
--- a/core/src/test/scala/mill/main/MainTests.scala
+++ b/core/src/test/scala/mill/main/MainTests.scala
@@ -1,7 +1,7 @@
package mill.main
import mill.Module
-import mill.define.Task
+import mill.define.{Segment, Task}
import mill.discover.{Discovered, Mirror}
import mill.util.TestGraphs._
import mill.util.TestUtil.test
@@ -14,7 +14,7 @@ object MainTests extends TestSuite{
val resolved = for{
args <- mill.main.RunScript.parseArgs(selectorString)
- val crossSelectors = args.map{case Mirror.Segment.Cross(x) => x.toList.map(_.toString) case _ => Nil}
+ val crossSelectors = args.map{case Segment.Cross(x) => x.toList.map(_.toString) case _ => Nil}
task <- mill.main.Resolve.resolve(args, mapping.mirror, mapping.base, Nil, crossSelectors, Nil)
} yield task
assert(resolved == expected)
diff --git a/core/src/test/scala/mill/util/TestGraphs.scala b/core/src/test/scala/mill/util/TestGraphs.scala
index 64fc4737..95ed8bf0 100644
--- a/core/src/test/scala/mill/util/TestGraphs.scala
+++ b/core/src/test/scala/mill/util/TestGraphs.scala
@@ -193,7 +193,7 @@ object TestGraphs{
object singleCross extends TestUtil.BaseModule {
object cross extends mill.CrossModule(CrossModule, "210", "211", "212")
- case class CrossModule(scalaVersion: String) extends Module{
+ case class CrossModule(scalaVersion: String, ctx0: Module.Ctx) extends Module()(ctx0){
def suffix = T{ scalaVersion }
}
}
@@ -204,16 +204,16 @@ object TestGraphs{
if !(platform == "native" && scalaVersion != "212")
} yield (scalaVersion, platform)
object cross extends mill.CrossModule2(CrossModule, crossMatrix:_*)
- case class CrossModule(scalaVersion: String, platform: String) extends Module{
+ case class CrossModule(scalaVersion: String, platform: String, ctx0: Module.Ctx) extends Module()(ctx0){
def suffix = T{ scalaVersion + "_" + platform }
}
}
object indirectNestedCrosses extends TestUtil.BaseModule {
object cross extends mill.CrossModule(CrossModule, "210", "211", "212")
- case class CrossModule(scalaVersion: String) extends mill.Module{
+ case class CrossModule(scalaVersion: String, ctx0: Module.Ctx) extends mill.Module()(ctx0){
object cross2 extends mill.CrossModule(CrossModule, "jvm", "js", "native")
- case class CrossModule(platform: String) extends mill.Module{
+ case class CrossModule(platform: String, ctx0: Module.Ctx) extends mill.Module{
def suffix = T{ scalaVersion + "_" + platform }
}
}
@@ -221,9 +221,9 @@ object TestGraphs{
object nestedCrosses extends TestUtil.BaseModule {
object cross extends mill.CrossModule(CrossModule, "210", "211", "212")
- case class CrossModule(scalaVersion: String) extends mill.Module{
+ case class CrossModule(scalaVersion: String, ctx0: Module.Ctx) extends mill.Module()(ctx0){
object cross2 extends mill.CrossModule(CrossModule, "jvm", "js", "native")
- case class CrossModule(platform: String) extends mill.Module{
+ case class CrossModule(platform: String, ctx0: Module.Ctx) extends mill.Module()(ctx0){
def suffix = T{ scalaVersion + "_" + platform }
}
}
diff --git a/core/src/test/scala/mill/util/TestUtil.scala b/core/src/test/scala/mill/util/TestUtil.scala
index 8f5378cb..88d28f8a 100644
--- a/core/src/test/scala/mill/util/TestUtil.scala
+++ b/core/src/test/scala/mill/util/TestUtil.scala
@@ -1,34 +1,32 @@
package mill.util
import ammonite.main.Router.Overrides
-import ammonite.ops.Path
-import mill.define.Module
-import mill.define.{BasePath, Caller, Target, Task}
+import mill.define._
import mill.eval.Result
import utest.assert
-import utest.framework.TestPath
import scala.collection.mutable
object TestUtil {
class BaseModule(implicit millModuleEnclosing0: sourcecode.Enclosing,
millModuleLine0: sourcecode.Line,
- millName0: sourcecode.Name)
+ millName0: sourcecode.Name,
+ overrides: Overrides)
extends Module()(
Module.Ctx.make(
implicitly,
implicitly,
implicitly,
- BasePath(ammonite.ops.pwd / millModuleEnclosing0.value)
+ BasePath(ammonite.ops.pwd / millModuleEnclosing0.value),
+ Segments(Nil),
+ implicitly
)
)
object test{
def anon(inputs: Task[Int]*) = new Test(inputs)
def apply(inputs: Task[Int]*)
- (implicit enclosing0: sourcecode.Enclosing,
- owner0: Caller[mill.Module],
- name0: sourcecode.Name)= {
+ (implicit ctx: Module.Ctx)= {
new TestTarget(inputs, pure = inputs.nonEmpty)
}
}
@@ -51,17 +49,9 @@ object TestUtil {
*/
class TestTarget(inputs: Seq[Task[Int]],
val pure: Boolean)
- (implicit enclosing0: sourcecode.Enclosing,
- lineNum0: sourcecode.Line,
- owner0: Caller[mill.Module],
- name0: sourcecode.Name,
- o: Overrides)
+ (implicit ctx0: Module.Ctx)
extends Test(inputs) with Target[Int]{
- val overrides = o.value
- val enclosing = enclosing0.value
- val lineNum = lineNum0.value
- val owner = owner0.value
- val name = name0.value
+ val ctx = ctx0.copy(segments0 = Segments(ctx0.segments0.value :+ ctx0.segment))
val readWrite = upickle.default.IntRW