summaryrefslogtreecommitdiff
path: root/scalaplugin/src
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-12-25 18:42:35 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-12-25 18:42:35 -0800
commitefc073009550976814b750aa5436b1cda1d8ef5b (patch)
tree08fb55d1ab3f1728dc9d78441cc164f8050d4934 /scalaplugin/src
parenta75ce74b632d5f5f570220a9b10d32587dd90b58 (diff)
downloadmill-efc073009550976814b750aa5436b1cda1d8ef5b.tar.gz
mill-efc073009550976814b750aa5436b1cda1d8ef5b.tar.bz2
mill-efc073009550976814b750aa5436b1cda1d8ef5b.zip
WIP: provide Mapping as a Ctx argument that can be accessed from within Tasks, for usage within `GenIdea` and similar
Diffstat (limited to 'scalaplugin/src')
-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
6 files changed, 41 insertions, 47 deletions
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
))