summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-15 11:39:00 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-15 11:43:48 -0800
commite5c313e12faf3ccf90aa7f69eb2eb16f8add782f (patch)
tree707bb843399219177023e43e680b6f0ad45544ec /core/src
parent09bdc885cf6d07a531e78827f168affb31fa90b5 (diff)
downloadmill-e5c313e12faf3ccf90aa7f69eb2eb16f8add782f.tar.gz
mill-e5c313e12faf3ccf90aa7f69eb2eb16f8add782f.tar.bz2
mill-e5c313e12faf3ccf90aa7f69eb2eb16f8add782f.zip
Add some test cases for nested target discovery, which also implicitly tests nested module discovery
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/scala/mill/define/Module.scala6
-rw-r--r--core/src/test/scala/mill/define/BasePathTests.scala4
-rw-r--r--core/src/test/scala/mill/define/DiscoverTests.scala60
-rw-r--r--core/src/test/scala/mill/util/TestGraphs.scala5
4 files changed, 67 insertions, 8 deletions
diff --git a/core/src/main/scala/mill/define/Module.scala b/core/src/main/scala/mill/define/Module.scala
index 33d0e267..3d3bb87c 100644
--- a/core/src/main/scala/mill/define/Module.scala
+++ b/core/src/main/scala/mill/define/Module.scala
@@ -43,12 +43,12 @@ object Module{
lazy val segmentsToModules = traverse{m => Seq(m.millModuleSegments -> m)}
.toMap
- lazy val segmentsToTargets = traverse{_.millInternal.reflect[Target[_]]}
+ lazy val targets = traverse{_.millInternal.reflect[Target[_]]}.toSet
+
+ lazy val segmentsToTargets = targets
.map(t => (t.ctx.segments, t))
.toMap
- lazy val targets = segmentsToTargets.valuesIterator.toSet
-
// Ensure we do not propagate the implicit parameters as implicits within
// the body of any inheriting class/trait/objects, as it would screw up any
// one else trying to use sourcecode.{Enclosing,Line} to capture debug info
diff --git a/core/src/test/scala/mill/define/BasePathTests.scala b/core/src/test/scala/mill/define/BasePathTests.scala
index df528cc4..577b89c8 100644
--- a/core/src/test/scala/mill/define/BasePathTests.scala
+++ b/core/src/test/scala/mill/define/BasePathTests.scala
@@ -12,11 +12,9 @@ object BasePathTests extends TestSuite{
}
'singleton - {
check(testGraphs.singleton, "singleton")
- check(testGraphs.singleton, "singleton")
-
}
'separateGroups - {
- check(TestGraphs.separateGroups, "separateGroups")
+ check(TestGraphs.triangleTask, "triangleTask")
}
'TraitWithModuleObject - {
check(TestGraphs.TraitWithModuleObject.TraitModule,
diff --git a/core/src/test/scala/mill/define/DiscoverTests.scala b/core/src/test/scala/mill/define/DiscoverTests.scala
new file mode 100644
index 00000000..7621169a
--- /dev/null
+++ b/core/src/test/scala/mill/define/DiscoverTests.scala
@@ -0,0 +1,60 @@
+package mill.define
+
+import mill.util.TestGraphs
+import utest._
+
+object DiscoverTests extends TestSuite{
+ val testGraphs = new TestGraphs
+ val tests = Tests{
+ def check[T <: Module](m: T)(targets: (T => Target[_])*) = {
+ val discovered = m.millInternal.targets
+ val expected = targets.map(_(m)).toSet
+ assert(discovered == expected)
+ }
+ 'singleton - {
+ check(testGraphs.singleton)(_.single)
+ }
+ 'separateGroups - {
+ check(TestGraphs.triangleTask)(_.left, _.right)
+ }
+ 'TraitWithModuleObject - {
+ check(TestGraphs.TraitWithModuleObject)(_.TraitModule.testFramework)
+ }
+ 'nestedModule - {
+ check(TestGraphs.nestedModule)(_.single, _.nested.single, _.classInstance.single)
+ }
+ 'singleCross - {
+ check(TestGraphs.singleCross)(
+ _.cross("210").suffix,
+ _.cross("211").suffix,
+ _.cross("212").suffix
+ )
+ }
+ 'doubleCross - {
+ check(TestGraphs.doubleCross)(
+ _.cross("210", "jvm").suffix,
+ _.cross("210", "js").suffix,
+ _.cross("211", "jvm").suffix,
+ _.cross("211", "js").suffix,
+ _.cross("212", "jvm").suffix,
+ _.cross("212", "js").suffix,
+ _.cross("212", "native").suffix
+ )
+ }
+ 'nestedCrosses - {
+ check(TestGraphs.nestedCrosses)(
+ _.cross("210").cross2("jvm").suffix,
+ _.cross("210").cross2("js").suffix,
+ _.cross("210").cross2("native").suffix,
+ _.cross("211").cross2("jvm").suffix,
+ _.cross("211").cross2("js").suffix,
+ _.cross("211").cross2("native").suffix,
+ _.cross("212").cross2("jvm").suffix,
+ _.cross("212").cross2("js").suffix,
+ _.cross("212").cross2("native").suffix
+ )
+ }
+
+ }
+}
+
diff --git a/core/src/test/scala/mill/util/TestGraphs.scala b/core/src/test/scala/mill/util/TestGraphs.scala
index 2a1a966b..54c8d815 100644
--- a/core/src/test/scala/mill/util/TestGraphs.scala
+++ b/core/src/test/scala/mill/util/TestGraphs.scala
@@ -107,8 +107,6 @@ class TestGraphs(){
}
val j = test(test.anon(i), test.anon(i, f), test.anon(f))
}
-}
-object TestGraphs{
// _ left _
// / \
// task1 -------- right
@@ -122,7 +120,10 @@ object TestGraphs{
def right = T{ task1() + task2() + left() + 1 }
}
+}
+
+object TestGraphs{
// _ left _
// / \
// task -------- right