From eec3a8995de1555f5d8120e106dd16badf2fdb00 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sun, 28 Jan 2018 08:18:04 -0800 Subject: Add a simple set of evaluation tests for the various cross builds in `TestGraphs`, and a `crossResolved` test to exercise `mill.define.Cross.Resolver` functionality --- core/test/src/mill/eval/CrossTests.scala | 77 ++++++++++++++++++++++++++++++++ core/test/src/mill/util/TestGraphs.scala | 18 ++++++++ docs/cross.md | 10 ++--- 3 files changed, 100 insertions(+), 5 deletions(-) create mode 100644 core/test/src/mill/eval/CrossTests.scala diff --git a/core/test/src/mill/eval/CrossTests.scala b/core/test/src/mill/eval/CrossTests.scala new file mode 100644 index 00000000..6ee48790 --- /dev/null +++ b/core/test/src/mill/eval/CrossTests.scala @@ -0,0 +1,77 @@ +package mill.eval + +import ammonite.ops._ +import mill.T +import mill.define.Discover +import mill.util.TestEvaluator +import mill.util.TestGraphs.{crossResolved, doubleCross, nestedCrosses, singleCross} +import utest._ + +object CrossTests extends TestSuite{ + val tests = Tests{ + 'singleCross - { + val check = new TestEvaluator( + singleCross, + Discover[singleCross.type], + pwd / 'target / 'workspace / "cross-tests" / "inputs", + pwd + ) + + val Right(("210", 1)) = check.apply(singleCross.cross("210").suffix) + val Right(("211", 1)) = check.apply(singleCross.cross("211").suffix) + val Right(("212", 1)) = check.apply(singleCross.cross("212").suffix) + } + + 'crossResolved - { + val check = new TestEvaluator( + crossResolved, + Discover[crossResolved.type], + pwd / 'target / 'workspace / "cross-tests" / "crossResolved", + pwd + ) + + val Right(("2.10", 1)) = check.apply(crossResolved.foo("2.10").suffix) + val Right(("2.11", 1)) = check.apply(crossResolved.foo("2.11").suffix) + val Right(("2.12", 1)) = check.apply(crossResolved.foo("2.12").suffix) + + val Right(("_2.10", 1)) = check.apply(crossResolved.bar("2.10").longSuffix) + val Right(("_2.11", 1)) = check.apply(crossResolved.bar("2.11").longSuffix) + val Right(("_2.12", 1)) = check.apply(crossResolved.bar("2.12").longSuffix) + } + + + 'doubleCross - { + val check = new TestEvaluator( + doubleCross, + Discover[doubleCross.type], + pwd / 'target / 'workspace / "cross-tests" / "doubleCross", + pwd + ) + + val Right(("210_jvm", 1)) = check.apply(doubleCross.cross("210", "jvm").suffix) + val Right(("210_js", 1)) = check.apply(doubleCross.cross("210", "js").suffix) + val Right(("211_jvm", 1)) = check.apply(doubleCross.cross("211", "jvm").suffix) + val Right(("211_js", 1)) = check.apply(doubleCross.cross("211", "js").suffix) + val Right(("212_jvm", 1)) = check.apply(doubleCross.cross("212", "jvm").suffix) + val Right(("212_js", 1)) = check.apply(doubleCross.cross("212", "js").suffix) + val Right(("212_native", 1)) = check.apply(doubleCross.cross("212", "native").suffix) + } + + 'nestedCrosses - { + val check = new TestEvaluator( + nestedCrosses, + Discover[nestedCrosses.type], + pwd / 'target / 'workspace / "cross-tests" / "nestedCrosses", + pwd + ) + + val Right(("210_jvm", 1)) = check.apply(nestedCrosses.cross("210").cross2("jvm").suffix) + val Right(("210_js", 1)) = check.apply(nestedCrosses.cross("210").cross2("js").suffix) + val Right(("211_jvm", 1)) = check.apply(nestedCrosses.cross("211").cross2("jvm").suffix) + val Right(("211_js", 1)) = check.apply(nestedCrosses.cross("211").cross2("js").suffix) + val Right(("212_jvm", 1)) = check.apply(nestedCrosses.cross("212").cross2("jvm").suffix) + val Right(("212_js", 1)) = check.apply(nestedCrosses.cross("212").cross2("js").suffix) + val Right(("212_native", 1)) = check.apply(nestedCrosses.cross("212").cross2("native").suffix) + } + } +} diff --git a/core/test/src/mill/util/TestGraphs.scala b/core/test/src/mill/util/TestGraphs.scala index aa8865ce..581d5e0a 100644 --- a/core/test/src/mill/util/TestGraphs.scala +++ b/core/test/src/mill/util/TestGraphs.scala @@ -200,6 +200,24 @@ object TestGraphs{ def suffix = T{ scalaVersion } } } + object crossResolved extends TestUtil.BaseModule { + trait MyModule extends Module{ + def crossVersion: String + implicit object resolver extends mill.define.Cross.Resolver[MyModule]{ + def resolve[V <: MyModule](c: Cross[V]): V = c.itemMap(List(crossVersion)) + } + } + + object foo extends mill.Cross[FooModule]("2.10", "2.11", "2.12") + class FooModule(val crossVersion: String) extends MyModule{ + def suffix = T{ crossVersion } + } + + object bar extends mill.Cross[BarModule]("2.10", "2.11", "2.12") + class BarModule(val crossVersion: String) extends MyModule{ + def longSuffix = T{ "_" + foo().suffix() } + } + } object doubleCross extends TestUtil.BaseModule { val crossMatrix = for{ scalaVersion <- Seq("210", "211", "212") diff --git a/docs/cross.md b/docs/cross.md index 9a2bbe92..25ae4a8a 100644 --- a/docs/cross.md +++ b/docs/cross.md @@ -139,19 +139,19 @@ to other cross-modules with an identical set of cross values: ```scala trait MyModule extends Module{ def crossVersion: String - implicit object resolver extends mill.define.Cross.Resolve[ResolvedModule]{ - def resolve[V <: ResolvedModule](c: Cross[V]): V = c.itemMap(crossVersion) + implicit object resolver extends mill.define.Cross.Resolver[MyModule]{ + def resolve[V <: MyModule](c: Cross[V]): V = c.itemMap(List(crossVersion)) } } object foo extends mill.Cross[FooModule]("2.10", "2.11", "2.12") -class FooModule(crossVersion: String) extends MyModule{ +class FooModule(val crossVersion: String) extends MyModule{ def suffix = T{ crossVersion } } object bar extends mill.Cross[BarModule]("2.10", "2.11", "2.12") -class BarModule(crossVersion: String) extends MyModule{ - def bigSuffix = T{ foo().suffix().toUpperCase() } +class BarModule(val crossVersion: String) extends MyModule{ + def longSuffix = T{ "_" + foo().suffix() } } ``` -- cgit v1.2.3