summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-28 08:18:04 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-28 08:18:04 -0800
commiteec3a8995de1555f5d8120e106dd16badf2fdb00 (patch)
tree18cb95d5f5d0ed340d4176aec0709fc1868a97b5
parent60f0a0ae5098b28999c279f0cdb105921b2c113a (diff)
downloadmill-eec3a8995de1555f5d8120e106dd16badf2fdb00.tar.gz
mill-eec3a8995de1555f5d8120e106dd16badf2fdb00.tar.bz2
mill-eec3a8995de1555f5d8120e106dd16badf2fdb00.zip
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
-rw-r--r--core/test/src/mill/eval/CrossTests.scala77
-rw-r--r--core/test/src/mill/util/TestGraphs.scala18
-rw-r--r--docs/cross.md10
3 files changed, 100 insertions, 5 deletions
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() }
}
```