From 42189d826bc1544013c31bb591ed6a23ccf853b1 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Tue, 23 Jan 2018 09:46:13 -0800 Subject: update mill build to work with new isolated scalaworker --- scalalib/src/mill/scalalib/ScalaModule.scala | 21 ++++++---------- scalalib/src/mill/scalalib/ScalaWorkerApi.scala | 33 ++++++++++++------------- 2 files changed, 23 insertions(+), 31 deletions(-) (limited to 'scalalib/src') diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index 77ebc417..848e0318 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -295,12 +295,11 @@ trait TestModule extends ScalaModule with TaskModule { def forkWorkingDir = ammonite.ops.pwd def test(args: String*) = T.command{ - mkdir(T.ctx().dest) val outputPath = T.ctx().dest/"out.json" Jvm.subprocess( - mainClass = "mill.scalalib.TestRunner", - classPath = Jvm.gatherClassloaderJars(), + mainClass = "mill.scalaworker.ScalaWorker", + classPath = mill.scalalib.ScalaWorkerApi.scalaWorkerClasspath(), jvmArgs = forkArgs(), envArgs = forkEnv(), mainArgs = Seq( @@ -323,17 +322,11 @@ trait TestModule extends ScalaModule with TaskModule { mkdir(T.ctx().dest) val outputPath = T.ctx().dest/"out.json" - Jvm.runLocal( - mainClass = "mill.scalalib.TestRunner", - classPath = Jvm.gatherClassloaderJars(), - mainArgs = Seq( - testFramework(), - runClasspath().map(_.path).mkString(" "), - Seq(compile().classes.path).mkString(" "), - args.mkString(" "), - outputPath.toString, - T.ctx().log.colored.toString - ) + mill.scalalib.ScalaWorkerApi.scalaWorker().apply( + testFramework(), + runClasspath().map(_.path), + Agg(compile().classes.path), + args ) val jsonOutput = upickle.json.read(outputPath.toIO) diff --git a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala index a032ab32..43b82460 100644 --- a/scalalib/src/mill/scalalib/ScalaWorkerApi.scala +++ b/scalalib/src/mill/scalalib/ScalaWorkerApi.scala @@ -12,25 +12,24 @@ import mill.define.{Task, Worker} import mill.eval.PathRef import mill.scalalib.Lib.resolveDependencies import mill.util.Loose - +import mill.util.JsonFormatters._ object ScalaWorkerApi extends mill.define.BaseModule(ammonite.ops.pwd){ - def scalaWorker: Worker[ScalaWorkerApi] = T.worker{ - + def scalaWorkerClasspath = T{ val scalaWorkerJar = sys.props("MILL_SCALA_WORKER") - val scalaWorkerClasspath = - if (scalaWorkerJar != null) Loose.Agg.from(scalaWorkerJar.split(',').map(Path(_))) - else { - val mill.eval.Result.Success(v) = resolveDependencies( - Seq(MavenRepository("https://repo1.maven.org/maven2")), - "2.12.4", - "2.12", - Seq(ivy"com.lihaoyi::mill-scalaworker:0.1-SNAPSHOT") - ) - v.map(_.path) - } - + if (scalaWorkerJar != null) Loose.Agg.from(scalaWorkerJar.split(',').map(Path(_))) + else { + val mill.eval.Result.Success(v) = resolveDependencies( + Seq(MavenRepository("https://repo1.maven.org/maven2")), + "2.12.4", + "2.12", + Seq(ivy"com.lihaoyi::mill-scalaworker:0.1-SNAPSHOT") + ) + v.map(_.path) + } + } + def scalaWorker: Worker[ScalaWorkerApi] = T.worker{ val cl = new java.net.URLClassLoader( - scalaWorkerClasspath.map(_.toNIO.toUri.toURL).toArray, + scalaWorkerClasspath().map(_.toNIO.toUri.toURL).toArray, getClass.getClassLoader ) val cls = cl.loadClass("mill.scalaworker.ScalaWorker") @@ -56,5 +55,5 @@ trait ScalaWorkerApi { entireClasspath: Agg[Path], testClassfilePath: Agg[Path], args: Seq[String]) - (implicit ctx: mill.util.Ctx): (String, Seq[Result]) + (implicit ctx: mill.util.Ctx.LogCtx): (String, Seq[Result]) } -- cgit v1.2.3