diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-22 20:41:35 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-22 20:41:35 -0800 |
commit | 3a87314737bea39b5d194ad2a9e7a88085011755 (patch) | |
tree | 26efb3ae3326df423376c675913a3a5bed359103 /core/src/test | |
parent | c73413a6ce30ba78f6dd34081bdd3d9bb8f2099d (diff) | |
download | mill-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')
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")) |