summaryrefslogtreecommitdiff
path: root/core/src/test/scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-11-22 20:41:35 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-11-22 20:41:35 -0800
commit3a87314737bea39b5d194ad2a9e7a88085011755 (patch)
tree26efb3ae3326df423376c675913a3a5bed359103 /core/src/test/scala
parentc73413a6ce30ba78f6dd34081bdd3d9bb8f2099d (diff)
downloadmill-3a87314737bea39b5d194ad2a9e7a88085011755.tar.gz
mill-3a87314737bea39b5d194ad2a9e7a88085011755.tar.bz2
mill-3a87314737bea39b5d194ad2a9e7a88085011755.zip
Targets living in cross modules can now be properly discovered, run and cached.
Try out the following commands on our Mill `build.sc` file to exercise this functionality - `scalaplugin/target/mill run Core.cross[jarA].jar` - `scalaplugin/target/mill run Core.cross[jarB].jar` - `scalaplugin/target/mill run Core.cross[jarC].jar`
Diffstat (limited to 'core/src/test/scala')
-rw-r--r--core/src/test/scala/mill/discover/ConsistencyTests.scala8
-rw-r--r--core/src/test/scala/mill/discover/CrossModuleTests.scala55
-rw-r--r--core/src/test/scala/mill/discover/DiscoveredTests.scala9
-rw-r--r--core/src/test/scala/mill/discover/LabelingTests.scala6
4 files changed, 62 insertions, 16 deletions
diff --git a/core/src/test/scala/mill/discover/ConsistencyTests.scala b/core/src/test/scala/mill/discover/ConsistencyTests.scala
index 67e22595..0591d5fc 100644
--- a/core/src/test/scala/mill/discover/ConsistencyTests.scala
+++ b/core/src/test/scala/mill/discover/ConsistencyTests.scala
@@ -1,6 +1,7 @@
package mill.discover
+import mill.discover.Mirror.Segment.Label
import mill.util.TestGraphs
import utest._
@@ -15,7 +16,12 @@ object ConsistencyTests extends TestSuite{
//
// Maybe later we can convert them into compile errors somehow
- val expected = List(List("down"), List("right"), List("left"), List("up"))
+ val expected = List(
+ List(Label("down")),
+ List(Label("right")),
+ List(Label("left")),
+ List(Label("up"))
+ )
'diamond - {
val inconsistent = Discovered.consistencyCheck(
diff --git a/core/src/test/scala/mill/discover/CrossModuleTests.scala b/core/src/test/scala/mill/discover/CrossModuleTests.scala
index c4e075da..8d8a86f6 100644
--- a/core/src/test/scala/mill/discover/CrossModuleTests.scala
+++ b/core/src/test/scala/mill/discover/CrossModuleTests.scala
@@ -2,6 +2,8 @@ package mill.discover
import mill.{Module, T}
import mill.define.Cross
+import mill.discover.Mirror.{LabelledTarget, Segment}
+import mill.discover.Mirror.Segment.Label
import utest._
object CrossModuleTests extends TestSuite{
@@ -17,7 +19,9 @@ object CrossModuleTests extends TestSuite{
}
}
- val Some((gen, innerMirror)) = Discovered[outer.type]
+ val discovered = Discovered[outer.type]
+
+ val Some((gen, innerMirror)) = discovered
.mirror
.children
.head._2
@@ -68,14 +72,49 @@ object CrossModuleTests extends TestSuite{
assert(suffix == expected)
}
}
- 'crossCommands - {
- object outer {
- val cross = for (c <- mill.define.Cross("a", "b", "c")) yield new mill.Module {
- def printIt() = T.command {
- println("PRINTING IT: " + c)
- }
- }
+ 'crossTargetDiscovery - {
+ object outer{
+ val crossed =
+ for(n <- Cross("2.10.6", "2.11.8", "2.12.4"))
+ yield new Module{ def scalaVersion = T{ n } }
}
+ val discovered = Discovered[outer.type]
+
+ val segments = discovered.targets(outer).map(_.segments)
+ val expectedSegments = List(
+ List(Label("crossed"), Segment.Cross(List("2.10.6")), Label("scalaVersion")),
+ List(Label("crossed"), Segment.Cross(List("2.11.8")), Label("scalaVersion")),
+ List(Label("crossed"), Segment.Cross(List("2.12.4")), Label("scalaVersion"))
+ )
+ assert(segments == expectedSegments)
+ val targets = discovered.targets(outer).map(_.target)
+ val expected = List(
+ outer.crossed(List("2.10.6")).scalaVersion,
+ outer.crossed(List("2.11.8")).scalaVersion,
+ outer.crossed(List("2.12.4")).scalaVersion
+ )
+ assert(targets == expected)
+
+ }
+ 'doubleCrossTargetDiscovery - {
+ object outer{
+ val crossed =
+ for{
+ n <- Cross("2.11.8", "2.12.4")
+ platform <- Cross("sjs0.6", "native0.3")
+ } yield new Module{ def suffix = T{ n + "_" + platform } }
+ }
+ val discovered = Discovered[outer.type]
+ val targets = discovered.targets(outer).map(_.target)
+
+ val expected = List(
+ outer.crossed(List("sjs0.6", "2.11.8")).suffix,
+ outer.crossed(List("native0.3", "2.11.8")).suffix,
+ outer.crossed(List("sjs0.6", "2.12.4")).suffix,
+ outer.crossed(List("native0.3", "2.12.4")).suffix
+ )
+ assert(targets == expected)
+
}
}
}
diff --git a/core/src/test/scala/mill/discover/DiscoveredTests.scala b/core/src/test/scala/mill/discover/DiscoveredTests.scala
index b09ff2de..7fa030eb 100644
--- a/core/src/test/scala/mill/discover/DiscoveredTests.scala
+++ b/core/src/test/scala/mill/discover/DiscoveredTests.scala
@@ -6,6 +6,7 @@ import mill.discover.Router.{ArgSig, EntryPoint}
import utest._
import mill.{Module, T}
import mill.util.TestUtil.test
+import mill.discover.Mirror.Segment.Label
object DiscoveredTests extends TestSuite{
val tests = Tests{
@@ -44,12 +45,12 @@ object DiscoveredTests extends TestSuite{
)
assert(flattenedHierarchy == expectedHierarchy)
- val mapped = discovered.targets(outer, Nil).map(x => x.segments -> x.target)
+ val mapped = discovered.targets(outer).map(x => x.segments -> x.target)
val expected = Seq(
- (List("classInstance", "single"), outer.classInstance.single),
- (List("nested", "single"), outer.nested.single),
- (List("single"), outer.single)
+ (List(Label("classInstance"), Label("single")), outer.classInstance.single),
+ (List(Label("nested"), Label("single")), outer.nested.single),
+ (List(Label("single")), outer.single)
)
assert(mapped.toSet == expected.toSet)
}
diff --git a/core/src/test/scala/mill/discover/LabelingTests.scala b/core/src/test/scala/mill/discover/LabelingTests.scala
index a37c090c..94d91cda 100644
--- a/core/src/test/scala/mill/discover/LabelingTests.scala
+++ b/core/src/test/scala/mill/discover/LabelingTests.scala
@@ -3,7 +3,7 @@ package mill.discover
import mill.define.Task
import mill.util.TestGraphs
import utest._
-
+import mill.discover.Mirror.Segment.Label
object LabelingTests extends TestSuite{
val tests = Tests{
@@ -15,10 +15,10 @@ object LabelingTests extends TestSuite{
def check[T: Discovered](base: T, t: Task[_], relPath: Option[String]) = {
- val names: Seq[(Task[_], Seq[String])] = Discovered.mapping(base).mapValues(_.segments).toSeq
+ val names: Seq[(Task[_], Seq[Mirror.Segment])] = Discovered.mapping(base).mapValues(_.segments).toSeq
val nameMap = names.toMap
- val targetLabel = nameMap.get(t).map(_.mkString("."))
+ val targetLabel = nameMap.get(t).map(_.map{case Label(v) => v}.mkString("."))
assert(targetLabel == relPath)
}
'singleton - check(singleton, singleton.single, Some("single"))