summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sc1
-rw-r--r--core/src/main/scala/mill/eval/Evaluator.scala35
-rw-r--r--core/src/main/scala/mill/main/MainRunner.scala2
-rw-r--r--core/src/main/scala/mill/main/MainWrapper.scala2
-rw-r--r--core/src/main/scala/mill/main/ReplApplyHandler.scala2
-rw-r--r--core/src/main/scala/mill/main/RunScript.scala14
-rw-r--r--core/src/main/scala/mill/util/Ctx.scala13
-rw-r--r--core/src/test/scala/mill/define/CacherTests.scala2
-rw-r--r--core/src/test/scala/mill/eval/EvaluationTests.scala2
-rw-r--r--core/src/test/scala/mill/eval/FailureTests.scala2
-rw-r--r--core/src/test/scala/mill/eval/JavaCompileJarTests.scala4
-rw-r--r--scalaplugin/src/main/scala/mill/scalaplugin/GenIdea.scala9
-rw-r--r--scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala12
-rw-r--r--scalaplugin/src/test/scala/mill/scalaplugin/BetterFilesTests.scala2
-rw-r--r--scalaplugin/src/test/scala/mill/scalaplugin/HelloWorldTests.scala47
-rw-r--r--scalaplugin/src/test/scala/mill/scalaplugin/JawnTests.scala2
-rw-r--r--scalaplugin/src/test/scala/mill/scalaplugin/TestEvaluator.scala16
17 files changed, 87 insertions, 80 deletions
diff --git a/build.sc b/build.sc
index cf792507..23c438b2 100755
--- a/build.sc
+++ b/build.sc
@@ -165,3 +165,4 @@ def releaseAssembly = T{
assemblyBase(assemblyClasspath().flatten, "")
}
+def idea = T{ mill.scalaplugin.GenIdea() } \ No newline at end of file
diff --git a/core/src/main/scala/mill/eval/Evaluator.scala b/core/src/main/scala/mill/eval/Evaluator.scala
index 4f0ace0c..5ca89793 100644
--- a/core/src/main/scala/mill/eval/Evaluator.scala
+++ b/core/src/main/scala/mill/eval/Evaluator.scala
@@ -13,10 +13,12 @@ import mill.util._
import scala.collection.mutable
-class Evaluator(workspacePath: Path,
- labeling: Map[Target[_], LabelledTarget[_]],
- log: Logger,
- val classLoaderSig: Seq[(Path, Long)] = Evaluator.classLoaderSig){
+class Evaluator[T](workspacePath: Path,
+ val mapping: Discovered.Mapping[T],
+ log: Logger,
+ val classLoaderSig: Seq[(Path, Long)] = Evaluator.classLoaderSig){
+
+ val labeling = mapping.value
val workerCache = mutable.Map.empty[Ctx.Loader[_], Any]
def evaluate(goals: OSet[Task[_]]): Evaluator.Results = {
@@ -48,15 +50,7 @@ class Evaluator(workspacePath: Path,
Evaluator.Results(goals.indexed.map(results), evaluated, transitive, failing)
}
- def resolveDestPaths(t: LabelledTarget[_]): (Path, Path) = {
- val segmentStrings = t.segments.flatMap{
- case Mirror.Segment.Label(s) => Seq(s)
- case Mirror.Segment.Cross(values) => values.map(_.toString)
- }
- val targetDestPath = workspacePath / segmentStrings
- val metadataPath = targetDestPath / up / (targetDestPath.last + ".mill.json")
- (targetDestPath, metadataPath)
- }
+
def evaluateGroupCached(terminal: Either[Task[_], LabelledTarget[_]],
group: OSet[Task[_]],
@@ -74,7 +68,7 @@ class Evaluator(workspacePath: Path,
case Left(task) =>
evaluateGroup(group, results, targetDestPath = None, maybeTargetLabel = None)
case Right(labelledTarget) =>
- val (destPath, metadataPath) = resolveDestPaths(labelledTarget)
+ val (destPath, metadataPath) = Evaluator.resolveDestPaths(workspacePath, labelledTarget)
val cached = for{
json <- scala.util.Try(upickle.json.read(read(metadataPath))).toOption
(cachedHash, terminalResult) <- scala.util.Try(upickle.default.readJs[(Int, upickle.Js.Value)](json)).toOption
@@ -168,7 +162,8 @@ class Evaluator(workspacePath: Path,
def load[T](x: Ctx.Loader[T]): T = {
workerCache.getOrElseUpdate(x, x.make()).asInstanceOf[T]
}
- }
+ },
+ mapping
)
val out = System.out
@@ -211,6 +206,16 @@ class Evaluator(workspacePath: Path,
object Evaluator{
+ def resolveDestPaths(workspacePath: Path, t: LabelledTarget[_]): (Path, Path) = {
+ val segmentStrings = t.segments.flatMap{
+ case Mirror.Segment.Label(s) => Seq(s)
+ case Mirror.Segment.Cross(values) => values.map(_.toString)
+ }
+ val targetDestPath = workspacePath / segmentStrings
+ val metadataPath = targetDestPath / up / (targetDestPath.last + ".mill.json")
+ (targetDestPath, metadataPath)
+ }
+
// check if the build itself has changed
def classLoaderSig = Thread.currentThread().getContextClassLoader match {
case scl: SpecialClassLoader => scl.classpathSignature
diff --git a/core/src/main/scala/mill/main/MainRunner.scala b/core/src/main/scala/mill/main/MainRunner.scala
index 9239463f..b99c4dc4 100644
--- a/core/src/main/scala/mill/main/MainRunner.scala
+++ b/core/src/main/scala/mill/main/MainRunner.scala
@@ -9,7 +9,7 @@ class MainRunner(config: ammonite.main.Cli.Config)
config,
System.out, System.err, System.in, System.out, System.err
){
- var lastEvaluator: Option[(Seq[(Path, Long)], Discovered.Mapping[_], Evaluator)] = None
+ var lastEvaluator: Option[(Seq[(Path, Long)], Discovered.Mapping[_], Evaluator[_])] = None
override def runScript(scriptPath: Path, scriptArgs: List[String]) =
watchLoop(
isRepl = false,
diff --git a/core/src/main/scala/mill/main/MainWrapper.scala b/core/src/main/scala/mill/main/MainWrapper.scala
index 813cd06b..403740aa 100644
--- a/core/src/main/scala/mill/main/MainWrapper.scala
+++ b/core/src/main/scala/mill/main/MainWrapper.scala
@@ -12,7 +12,7 @@ trait MainWrapper[T]{
new mill.main.ReplApplyHandler(
new mill.eval.Evaluator(
ammonite.ops.pwd / 'out,
- mapping.value,
+ mapping,
new mill.util.PrintLogger(true)
)
)
diff --git a/core/src/main/scala/mill/main/ReplApplyHandler.scala b/core/src/main/scala/mill/main/ReplApplyHandler.scala
index bb55c03f..f91d0ff2 100644
--- a/core/src/main/scala/mill/main/ReplApplyHandler.scala
+++ b/core/src/main/scala/mill/main/ReplApplyHandler.scala
@@ -6,7 +6,7 @@ import mill.define.Task
import mill.eval.Evaluator
import mill.util.{OSet}
-class ReplApplyHandler(evaluator: Evaluator) extends ApplyHandler[Task] {
+class ReplApplyHandler(evaluator: Evaluator[_]) extends ApplyHandler[Task] {
// Evaluate classLoaderSig only once in the REPL to avoid busting caches
// as the user enters more REPL commands and changes the classpath
val classLoaderSig = Evaluator.classLoaderSig
diff --git a/core/src/main/scala/mill/main/RunScript.scala b/core/src/main/scala/mill/main/RunScript.scala
index 14d521fe..decc18a0 100644
--- a/core/src/main/scala/mill/main/RunScript.scala
+++ b/core/src/main/scala/mill/main/RunScript.scala
@@ -25,8 +25,8 @@ object RunScript{
path: Path,
interp: ammonite.interp.Interpreter,
scriptArgs: Seq[String],
- lastEvaluator: Option[(Seq[(Path, Long)], Discovered.Mapping[_], Evaluator)])
- : Res[(Discovered.Mapping[_], Evaluator, Seq[(Path, Long)], Boolean)] = {
+ lastEvaluator: Option[(Seq[(Path, Long)], Discovered.Mapping[_], Evaluator[_])])
+ : Res[(Discovered.Mapping[_], Evaluator[_], Seq[(Path, Long)], Boolean)] = {
val log = new PrintLogger(true)
for{
@@ -38,13 +38,12 @@ object RunScript{
case _ =>
interp.watch(path)
for(mapping <- evaluateMapping(wd, path, interp))
- yield (mapping, new Evaluator(pwd / 'out, mapping.value, log))
+ yield (mapping, new Evaluator(pwd / 'out, mapping, log))
}
} yield {
val evaluationWatches = mutable.Buffer.empty[(Path, Long)]
val res = evaluateTarget(
evaluator,
- mapping,
scriptArgs,
p => evaluationWatches.append((p, Interpreter.pathSignature(p)))
)
@@ -95,8 +94,7 @@ object RunScript{
_ <- Res(consistencyCheck(mapping))
} yield mapping
}
- def evaluateTarget[T](evaluator: Evaluator,
- mapping: Discovered.Mapping[T],
+ def evaluateTarget[T](evaluator: Evaluator[_],
scriptArgs: Seq[String],
watch: Path => Unit) = {
@@ -107,11 +105,11 @@ object RunScript{
case Mirror.Segment.Cross(x) => x.toList.map(_.toString)
case _ => Nil
}
- target <- mill.main.Resolve.resolve(sel, mapping.mirror, mapping.base, rest, crossSelectors, Nil)
+ target <- mill.main.Resolve.resolve(sel, evaluator.mapping.mirror, evaluator.mapping.base, rest, crossSelectors, Nil)
_ <- evaluate(evaluator, target, watch).toLeft(())
} yield ()
}
- def evaluate(evaluator: Evaluator,
+ def evaluate(evaluator: Evaluator[_],
target: Task[Any],
watch: Path => Unit): Option[String] = {
val evaluated = evaluator.evaluate(OSet(target))
diff --git a/core/src/main/scala/mill/util/Ctx.scala b/core/src/main/scala/mill/util/Ctx.scala
index 6549531f..ad9b32db 100644
--- a/core/src/main/scala/mill/util/Ctx.scala
+++ b/core/src/main/scala/mill/util/Ctx.scala
@@ -2,7 +2,7 @@ package mill.util
import ammonite.ops.Path
import mill.define.Applicative.ImplicitStub
-import mill.util.Ctx.{ArgCtx, DestCtx, LoaderCtx, LogCtx}
+import mill.util.Ctx.{ArgCtx, DestCtx, LoaderCtx, LogCtx, MappingCtx}
import scala.annotation.compileTimeOnly
import scala.language.implicitConversions
@@ -31,11 +31,20 @@ object Ctx{
trait Loader[T]{
def make(): T
}
+ trait MappingCtx{
+ def mapping: mill.discover.Discovered.Mapping[_]
+ }
}
class Ctx(val args: IndexedSeq[_],
val dest: Path,
val log: Logger,
- workerCtx0: Ctx.LoaderCtx) extends DestCtx with LogCtx with ArgCtx with LoaderCtx{
+ workerCtx0: Ctx.LoaderCtx,
+ val mapping: mill.discover.Discovered.Mapping[_])
+ extends DestCtx
+ with LogCtx
+ with ArgCtx
+ with LoaderCtx
+ with MappingCtx{
def load[T](x: Ctx.Loader[T]): T = workerCtx0.load(x)
def length = args.length
diff --git a/core/src/test/scala/mill/define/CacherTests.scala b/core/src/test/scala/mill/define/CacherTests.scala
index fe8e1b89..d85e9e6b 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.value, DummyLogger)
+ val evaluator = new Evaluator(workspace, 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 31a330d1..8b13987b 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.value, DummyLogger)
+ def evaluator = new Evaluator(workspace, 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 84b13af5..42331a74 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.value, DummyLogger)
+ val evaluator = new Evaluator(workspace, 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 356ffea1..7587b3d9 100644
--- a/core/src/test/scala/mill/eval/JavaCompileJarTests.scala
+++ b/core/src/test/scala/mill/eval/JavaCompileJarTests.scala
@@ -51,7 +51,7 @@ object JavaCompileJarTests extends TestSuite{
val mapping = Discovered.mapping(Build)
def eval[T](t: Task[T]): Either[Result.Failing, (T, Int)] = {
- val evaluator = new Evaluator(workspacePath, mapping.value, DummyLogger)
+ val evaluator = new Evaluator(workspacePath, mapping, DummyLogger)
val evaluated = evaluator.evaluate(OSet(t))
if (evaluated.failing.keyCount == 0){
@@ -68,7 +68,7 @@ object JavaCompileJarTests extends TestSuite{
}
def check(targets: OSet[Task[_]], expected: OSet[Task[_]]) = {
- val evaluator = new Evaluator(workspacePath, mapping.value, DummyLogger)
+ val evaluator = new Evaluator(workspacePath, mapping, DummyLogger)
val evaluated = evaluator.evaluate(targets)
.evaluated
diff --git a/scalaplugin/src/main/scala/mill/scalaplugin/GenIdea.scala b/scalaplugin/src/main/scala/mill/scalaplugin/GenIdea.scala
index 07a9e998..86e33d8d 100644
--- a/scalaplugin/src/main/scala/mill/scalaplugin/GenIdea.scala
+++ b/scalaplugin/src/main/scala/mill/scalaplugin/GenIdea.scala
@@ -16,20 +16,19 @@ object GenIdea {
val workspacePath = pwd / 'out
- val evaluator = new Evaluator(workspacePath, mapping.value, new PrintLogger(true))
+ val evaluator = new Evaluator(workspacePath, mapping, new PrintLogger(true))
for((relPath, xml) <- xmlFileLayout(mapping, evaluator)){
write.over(pwd/relPath, pp.format(xml))
}
}
- def xmlFileLayout[T](mapping: Discovered.Mapping[T],
- evaluator: Evaluator): Seq[(RelPath, scala.xml.Node)] = {
+ def xmlFileLayout[T](evaluator: Evaluator): Seq[(RelPath, scala.xml.Node)] = {
val modules = Mirror
- .traverse(mapping.base, mapping.mirror){ (h, p) =>
- h.node(mapping.base, p.reverse.map{case Mirror.Segment.Cross(vs) => vs.toList case _ => Nil}.toList) match {
+ .traverse(evaluator.mapping.base, evaluator.mapping.mirror){ (h, p) =>
+ h.node(evaluator.mapping.base, p.reverse.map{case Mirror.Segment.Cross(vs) => vs.toList case _ => Nil}.toList) match {
case m: ScalaModule => Seq(p -> m)
case _ => Nil
}
diff --git a/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala b/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala
index 42d93c2a..71bf5213 100644
--- a/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala
+++ b/scalaplugin/src/test/scala/mill/scalaplugin/AcyclicTests.scala
@@ -53,15 +53,10 @@ object AcyclicTests extends TestSuite{
mkdir(workspacePath/up)
cp(srcPath, workspacePath)
val mapping = Discovered.mapping(AcyclicBuild)
- def eval[T](t: Task[T]) = TestEvaluator.eval(mapping.value, workspacePath)(t)
+ val eval = new TestEvaluator(mapping, workspacePath)
val packageScala = workspacePath/'src/'main/'scala/'acyclic/"package.scala"
- 'scala210 - check("2.10.6", full = false)
- 'scala211 - check("2.11.8", full = false)
- 'scala2123 - check("2.12.3", full = true)
- 'scala2124 - check("2.12.4", full = false)
-
val allBinaryVersions = Seq("2.10", "2.11", "2.12")
def check(scalaVersion: String, full: Boolean) = {
// Dependencies are right; make sure every dependency is of the correct
@@ -115,5 +110,10 @@ object AcyclicTests extends TestSuite{
}
}
+ 'scala210 - check("2.10.6", full = false)
+ 'scala211 - check("2.11.8", full = false)
+ 'scala2123 - check("2.12.3", full = true)
+ 'scala2124 - check("2.12.4", full = false)
+
}
}
diff --git a/scalaplugin/src/test/scala/mill/scalaplugin/BetterFilesTests.scala b/scalaplugin/src/test/scala/mill/scalaplugin/BetterFilesTests.scala
index c9c8618c..84e83a02 100644
--- a/scalaplugin/src/test/scala/mill/scalaplugin/BetterFilesTests.scala
+++ b/scalaplugin/src/test/scala/mill/scalaplugin/BetterFilesTests.scala
@@ -97,7 +97,7 @@ object BetterFilesTests extends TestSuite{
mkdir(workspacePath/up)
cp(srcPath, workspacePath)
val mapping = Discovered.mapping(BetterFilesBuild)
- def eval[T](t: Task[T]) = TestEvaluator.eval(mapping.value, workspacePath)(t)
+ val eval = new TestEvaluator(mapping, workspacePath)
'test - {
diff --git a/scalaplugin/src/test/scala/mill/scalaplugin/HelloWorldTests.scala b/scalaplugin/src/test/scala/mill/scalaplugin/HelloWorldTests.scala
index 41783efb..2ada6463 100644
--- a/scalaplugin/src/test/scala/mill/scalaplugin/HelloWorldTests.scala
+++ b/scalaplugin/src/test/scala/mill/scalaplugin/HelloWorldTests.scala
@@ -6,7 +6,7 @@ import mill._
import mill.define.{Target, Task}
import mill.discover.Discovered
import mill.discover.Mirror.LabelledTarget
-import mill.eval.Result
+import mill.eval.{Evaluator, Result}
import mill.scalaplugin.publish._
import sbt.internal.inc.CompileFailed
import utest._
@@ -57,8 +57,10 @@ object HelloWorldTests extends TestSuite {
val outputPath = workspacePath / 'out
val mainObject = workspacePath / 'src / 'main / 'scala / "Main.scala"
- def eval[T](t: Task[T], mapping: Map[Target[_], LabelledTarget[_]]) =
- TestEvaluator.eval(mapping, outputPath)(t)
+ def eval[T](t: Task[T], mapping: Discovered.Mapping[_]) = {
+ val eval = new TestEvaluator(mapping, workspacePath)
+ eval(t)
+ }
val helloWorldMapping = Discovered.mapping(HelloWorld)
val helloWorldWithMainMapping = Discovered.mapping(HelloWorldWithMain)
@@ -68,7 +70,7 @@ object HelloWorldTests extends TestSuite {
'scalaVersion - {
'fromBuild - {
val Right((result, evalCount)) =
- eval(HelloWorld.scalaVersion, helloWorldMapping.value)
+ eval(HelloWorld.scalaVersion, helloWorldMapping)
assert(
result == "2.12.4",
@@ -82,7 +84,7 @@ object HelloWorldTests extends TestSuite {
val Right((result, evalCount)) =
eval(HelloWorldScalaOverride.scalaVersion,
- Discovered.mapping(HelloWorldScalaOverride).value)
+ Discovered.mapping(HelloWorldScalaOverride))
assert(
result == "2.11.11",
@@ -93,7 +95,7 @@ object HelloWorldTests extends TestSuite {
'scalacOptions - {
'emptyByDefault - {
val Right((result, evalCount)) =
- eval(HelloWorld.scalacOptions, helloWorldMapping.value)
+ eval(HelloWorld.scalacOptions, helloWorldMapping)
assert(
result.isEmpty,
@@ -103,7 +105,7 @@ object HelloWorldTests extends TestSuite {
'override - {
val Right((result, evalCount)) =
eval(HelloWorldFatalWarnings.scalacOptions,
- Discovered.mapping(HelloWorldFatalWarnings).value)
+ Discovered.mapping(HelloWorldFatalWarnings))
assert(
result == Seq("-Ywarn-unused", "-Xfatal-warnings"),
@@ -114,7 +116,7 @@ object HelloWorldTests extends TestSuite {
'compile - {
'fromScratch - {
val Right((result, evalCount)) =
- eval(HelloWorld.compile, helloWorldMapping.value)
+ eval(HelloWorld.compile, helloWorldMapping)
val outPath = result.classes.path
val analysisFile = result.analysisFile
@@ -131,31 +133,30 @@ object HelloWorldTests extends TestSuite {
// don't recompile if nothing changed
val Right((_, unchangedEvalCount)) =
- eval(HelloWorld.compile, helloWorldMapping.value)
+ eval(HelloWorld.compile, helloWorldMapping)
assert(unchangedEvalCount == 0)
}
'recompileOnChange - {
val Right((_, freshCount)) =
- eval(HelloWorld.compile, helloWorldMapping.value)
+ eval(HelloWorld.compile, helloWorldMapping)
assert(freshCount > 0)
write.append(mainObject, "\n")
val Right((_, incCompileCount)) =
- eval(HelloWorld.compile, helloWorldMapping.value)
+ eval(HelloWorld.compile, helloWorldMapping)
assert(incCompileCount > 0, incCompileCount < freshCount)
}
'failOnError - {
write.append(mainObject, "val x: ")
val Left(Result.Exception(err)) =
- eval(HelloWorld.compile, helloWorldMapping.value)
+ eval(HelloWorld.compile, helloWorldMapping)
assert(err.isInstanceOf[CompileFailed])
val (compilePath, compileMetadataPath) =
- TestEvaluator.resolveDestPaths(outputPath)(
- helloWorldMapping.value(HelloWorld.compile))
+ Evaluator.resolveDestPaths(outputPath, helloWorldMapping.value(HelloWorld.compile))
assert(
ls.rec(compilePath / 'classes).isEmpty,
@@ -166,7 +167,7 @@ object HelloWorldTests extends TestSuite {
// compilation fails because of "-Xfatal-warnings" flag
val Left(Result.Exception(err)) =
eval(HelloWorldFatalWarnings.compile,
- Discovered.mapping(HelloWorldFatalWarnings).value)
+ Discovered.mapping(HelloWorldFatalWarnings))
assert(err.isInstanceOf[CompileFailed])
}
@@ -174,7 +175,7 @@ object HelloWorldTests extends TestSuite {
'runMain - {
'runMainObject - {
val Right((_, evalCount)) =
- eval(HelloWorld.runMain("Main"), helloWorldMapping.value)
+ eval(HelloWorld.runMain("Main"), helloWorldMapping)
assert(evalCount > 0)
@@ -186,7 +187,7 @@ object HelloWorldTests extends TestSuite {
}
'notRunInvalidMainObject - {
val Left(Result.Exception(err)) =
- eval(HelloWorld.runMain("Invalid"), helloWorldMapping.value)
+ eval(HelloWorld.runMain("Invalid"), helloWorldMapping)
assert(
err.isInstanceOf[InteractiveShelloutException]
@@ -196,7 +197,7 @@ object HelloWorldTests extends TestSuite {
write.append(mainObject, "val x: ")
val Left(Result.Exception(err)) =
- eval(HelloWorld.runMain("Main"), helloWorldMapping.value)
+ eval(HelloWorld.runMain("Main"), helloWorldMapping)
assert(
err.isInstanceOf[CompileFailed]
@@ -206,7 +207,7 @@ object HelloWorldTests extends TestSuite {
'run - {
'runIfMainClassProvided - {
val Right((_, evalCount)) =
- eval(HelloWorldWithMain.run(), helloWorldWithMainMapping.value)
+ eval(HelloWorldWithMain.run(), helloWorldWithMainMapping)
assert(evalCount > 0)
@@ -218,7 +219,7 @@ object HelloWorldTests extends TestSuite {
}
'notRunWithoutMainClass - {
val Left(Result.Exception(err)) =
- eval(HelloWorld.run(), helloWorldMapping.value)
+ eval(HelloWorld.run(), helloWorldMapping)
assert(
err.isInstanceOf[RuntimeException]
@@ -228,7 +229,7 @@ object HelloWorldTests extends TestSuite {
'jar - {
'nonEmpty - {
val Right((result, evalCount)) =
- eval(HelloWorld.jar, helloWorldMapping.value)
+ eval(HelloWorld.jar, helloWorldMapping)
assert(
exists(result.path),
@@ -253,7 +254,7 @@ object HelloWorldTests extends TestSuite {
}
'runJar - {
val Right((result, evalCount)) =
- eval(HelloWorldWithMain.jar, helloWorldWithMainMapping.value)
+ eval(HelloWorldWithMain.jar, helloWorldWithMainMapping)
assert(
exists(result.path),
@@ -269,7 +270,7 @@ object HelloWorldTests extends TestSuite {
)
}
'logOutputToFile {
- eval(HelloWorld.compile, helloWorldMapping.value)
+ eval(HelloWorld.compile, helloWorldMapping)
val logFile = outputPath / "compile.log"
assert(exists(logFile))
diff --git a/scalaplugin/src/test/scala/mill/scalaplugin/JawnTests.scala b/scalaplugin/src/test/scala/mill/scalaplugin/JawnTests.scala
index 892857c9..97dff017 100644
--- a/scalaplugin/src/test/scala/mill/scalaplugin/JawnTests.scala
+++ b/scalaplugin/src/test/scala/mill/scalaplugin/JawnTests.scala
@@ -74,7 +74,7 @@ object JawnTests extends TestSuite{
mkdir(workspacePath/up)
cp(srcPath, workspacePath)
val mapping = Discovered.mapping(JawnBuild)
- def eval[T](t: Task[T]) = TestEvaluator.eval(mapping.value, workspacePath)(t)
+ val eval = new TestEvaluator(mapping, workspacePath)
'test - {
def compileOutput = workspacePath / 'jawn / "2.12.3" / 'Parser / 'compile
diff --git a/scalaplugin/src/test/scala/mill/scalaplugin/TestEvaluator.scala b/scalaplugin/src/test/scala/mill/scalaplugin/TestEvaluator.scala
index 58e4f5f3..05d53e8d 100644
--- a/scalaplugin/src/test/scala/mill/scalaplugin/TestEvaluator.scala
+++ b/scalaplugin/src/test/scala/mill/scalaplugin/TestEvaluator.scala
@@ -2,20 +2,14 @@ package mill.scalaplugin
import ammonite.ops.Path
import mill.define.{Target, Task}
-import mill.discover.Mirror
+import mill.discover.{Discovered, Mirror}
import mill.eval.{Evaluator, Result}
import mill.util.{DummyLogger, OSet, PrintLogger}
-object TestEvaluator {
+class TestEvaluator(mapping: Discovered.Mapping[_], workspacePath: Path){
+ val evaluator = new Evaluator(workspacePath, mapping, DummyLogger)
-
- def resolveDestPaths(workspacePath: Path)(t: Mirror.LabelledTarget[_]): (Path, Path) = {
- new Evaluator(workspacePath, Map.empty, DummyLogger).resolveDestPaths(t)
- }
-
- def eval[T](mapping: Map[Target[_], Mirror.LabelledTarget[_]],
- workspacePath: Path)(t: Task[T]): Either[Result.Failing, (T, Int)] = {
- val evaluator = new Evaluator(workspacePath, mapping, DummyLogger)
+ def apply[T](t: Task[T]): Either[Result.Failing, (T, Int)] = {
val evaluated = evaluator.evaluate(OSet(t))
if (evaluated.failing.keyCount == 0) {
@@ -23,7 +17,7 @@ object TestEvaluator {
Tuple2(
evaluated.rawValues.head.asInstanceOf[Result.Success[T]].value,
evaluated.evaluated.collect {
- case t: Target[_] if mapping.contains(t) => t
+ case t: Target[_] if mapping.value.contains(t) => t
case t: mill.define.Command[_] => t
}.size
))