From 13f896a36eb275de9784ce3400dde09311afd6bd Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sun, 31 Dec 2017 00:04:49 -0800 Subject: - Convert `T.source` into a generic `Target` that flushes the cache every time - Prepare `T.ctx().base: Path` that `Task`s (including `T.source`) can use to find a "default" path for source files. - Simplify `Cacher` --- core/src/test/scala/mill/define/CacherTests.scala | 2 +- core/src/test/scala/mill/eval/EvaluationTests.scala | 2 +- core/src/test/scala/mill/eval/FailureTests.scala | 2 +- core/src/test/scala/mill/eval/JavaCompileJarTests.scala | 17 +++++++++-------- core/src/test/scala/mill/util/TestEvaluator.scala | 10 ++++++---- 5 files changed, 18 insertions(+), 15 deletions(-) (limited to 'core/src/test') diff --git a/core/src/test/scala/mill/define/CacherTests.scala b/core/src/test/scala/mill/define/CacherTests.scala index d85e9e6b..e46c0390 100644 --- a/core/src/test/scala/mill/define/CacherTests.scala +++ b/core/src/test/scala/mill/define/CacherTests.scala @@ -29,7 +29,7 @@ object CacherTests extends TestSuite{ def eval[V](mapping: Discovered.Mapping[_], v: Task[V])(implicit tp: TestPath) = { val workspace = ammonite.ops.pwd / 'target / 'workspace / tp.value - val evaluator = new Evaluator(workspace, mapping, DummyLogger) + val evaluator = new Evaluator(workspace, ammonite.ops.pwd, mapping, DummyLogger) evaluator.evaluate(OSet(v)).values(0) } diff --git a/core/src/test/scala/mill/eval/EvaluationTests.scala b/core/src/test/scala/mill/eval/EvaluationTests.scala index 75a6cc52..fb3f6b97 100644 --- a/core/src/test/scala/mill/eval/EvaluationTests.scala +++ b/core/src/test/scala/mill/eval/EvaluationTests.scala @@ -15,7 +15,7 @@ object EvaluationTests extends TestSuite{ val workspace = ammonite.ops.pwd / 'target / 'workspace / tp.value ammonite.ops.rm(ammonite.ops.Path(workspace, ammonite.ops.pwd)) // Make sure data is persisted even if we re-create the evaluator each time - def evaluator = new Evaluator(workspace, mapping, DummyLogger) + def evaluator = new Evaluator(workspace, ammonite.ops.pwd, mapping, DummyLogger) def apply(target: Task[_], expValue: Any, expEvaled: OSet[Task[_]], diff --git a/core/src/test/scala/mill/eval/FailureTests.scala b/core/src/test/scala/mill/eval/FailureTests.scala index 42331a74..c77ad74b 100644 --- a/core/src/test/scala/mill/eval/FailureTests.scala +++ b/core/src/test/scala/mill/eval/FailureTests.scala @@ -14,7 +14,7 @@ object FailureTests extends TestSuite{ } class Checker(mapping: Discovered.Mapping[_])(implicit tp: TestPath){ - val evaluator = new Evaluator(workspace, mapping, DummyLogger) + val evaluator = new Evaluator(workspace, ammonite.ops.pwd, mapping, DummyLogger) def apply(target: Target[_], expectedFailCount: Int, expectedRawValues: Seq[Result[_]]) = { diff --git a/core/src/test/scala/mill/eval/JavaCompileJarTests.scala b/core/src/test/scala/mill/eval/JavaCompileJarTests.scala index 0efd0bf1..667aaa22 100644 --- a/core/src/test/scala/mill/eval/JavaCompileJarTests.scala +++ b/core/src/test/scala/mill/eval/JavaCompileJarTests.scala @@ -2,7 +2,7 @@ package mill.eval import ammonite.ops.ImplicitWd._ import ammonite.ops._ -import mill.define.{Target, Task} +import mill.define.{Source, Target, Task} import mill.discover.Discovered import mill.modules.Jvm import mill.util.Ctx.DestCtx @@ -36,8 +36,8 @@ object JavaCompileJarTests extends TestSuite{ // | // v // resourceRoot ----> jar - def sourceRoot = T.source{ sourceRootPath } - def resourceRoot = T.source{ resourceRootPath } + def sourceRoot = T.source{ PathRef(sourceRootPath) } + def resourceRoot = T.source{ PathRef(resourceRootPath) } def allSources = T{ ls.rec(sourceRoot().path).map(PathRef(_)) } def classFiles = T{ compileAll(allSources()) } def jar = T{ Jvm.createJar(Seq(resourceRoot().path, classFiles().path)) } @@ -51,7 +51,7 @@ object JavaCompileJarTests extends TestSuite{ val mapping = Discovered.mapping(Build) def eval[T](t: Task[T]) = { - val evaluator = new Evaluator(workspacePath, mapping, DummyLogger) + val evaluator = new Evaluator(workspacePath, pwd, mapping, DummyLogger) val evaluated = evaluator.evaluate(OSet(t)) if (evaluated.failing.keyCount == 0){ @@ -68,12 +68,13 @@ object JavaCompileJarTests extends TestSuite{ } def check(targets: OSet[Task[_]], expected: OSet[Task[_]]) = { - val evaluator = new Evaluator(workspacePath, mapping, DummyLogger) + val evaluator = new Evaluator(workspacePath, pwd, mapping, DummyLogger) val evaluated = evaluator.evaluate(targets) .evaluated .flatMap(_.asTarget) .filter(mapping.targets.contains) + .filter(!_.isInstanceOf[Source[_]]) assert(evaluated == expected) } @@ -144,7 +145,7 @@ object JavaCompileJarTests extends TestSuite{ val Right((runOutput, evalCount)) = eval(Build.run("test.Foo")) assert( runOutput.out.string == (31337 + 271828) + "\n", - evalCount == 1 + evalCount == 2 ) } @@ -165,12 +166,12 @@ object JavaCompileJarTests extends TestSuite{ val Right((runOutput2, evalCount2)) = eval(Build.run("test.BarFour")) assert( runOutput2.out.string == "New Cls!\n", - evalCount2 == 3 + evalCount2 == 4 ) val Right((runOutput3, evalCount3)) = eval(Build.run("test.BarFour")) assert( runOutput3.out.string == "New Cls!\n", - evalCount3 == 1 + evalCount3 == 2 ) } } diff --git a/core/src/test/scala/mill/util/TestEvaluator.scala b/core/src/test/scala/mill/util/TestEvaluator.scala index 5d16de43..6ae90167 100644 --- a/core/src/test/scala/mill/util/TestEvaluator.scala +++ b/core/src/test/scala/mill/util/TestEvaluator.scala @@ -1,12 +1,14 @@ package mill.util import ammonite.ops.Path -import mill.define.{Target, Task} +import mill.define.{Source, Target, Task} import mill.discover.{Discovered, Mirror} import mill.eval.{Evaluator, Result} -class TestEvaluator(mapping: Discovered.Mapping[_], workspacePath: Path){ - val evaluator = new Evaluator(workspacePath, mapping, DummyLogger) +class TestEvaluator(mapping: Discovered.Mapping[_], + workspacePath: Path, + basePath: Path){ + val evaluator = new Evaluator(workspacePath, basePath, mapping, DummyLogger) def apply[T](t: Task[T]): Either[Result.Failing, (T, Int)] = { val evaluated = evaluator.evaluate(OSet(t)) @@ -16,7 +18,7 @@ class TestEvaluator(mapping: Discovered.Mapping[_], workspacePath: Path){ Tuple2( evaluated.rawValues.head.asInstanceOf[Result.Success[T]].value, evaluated.evaluated.collect { - case t: Target[_] if mapping.targets.contains(t) => t + case t: Target[_] if mapping.targets.contains(t) && !t.isInstanceOf[Source[_]] => t case t: mill.define.Command[_] => t }.size )) -- cgit v1.2.3