From e5c313e12faf3ccf90aa7f69eb2eb16f8add782f Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Mon, 15 Jan 2018 11:39:00 -0800 Subject: Add some test cases for nested target discovery, which also implicitly tests nested module discovery --- core/src/main/scala/mill/define/Module.scala | 6 +-- .../src/test/scala/mill/define/BasePathTests.scala | 4 +- .../src/test/scala/mill/define/DiscoverTests.scala | 60 ++++++++++++++++++++++ core/src/test/scala/mill/util/TestGraphs.scala | 5 +- 4 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 core/src/test/scala/mill/define/DiscoverTests.scala 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 -- cgit v1.2.3