summaryrefslogtreecommitdiff
path: root/scalalib
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-23 09:46:13 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-23 09:46:13 -0800
commit42189d826bc1544013c31bb591ed6a23ccf853b1 (patch)
tree62ce1fa36ed912403fa745b554107194ca25ca3a /scalalib
parentac3266ca796b8ed2052804077820d2f39cde362d (diff)
downloadmill-42189d826bc1544013c31bb591ed6a23ccf853b1.tar.gz
mill-42189d826bc1544013c31bb591ed6a23ccf853b1.tar.bz2
mill-42189d826bc1544013c31bb591ed6a23ccf853b1.zip
update mill build to work with new isolated scalaworker
Diffstat (limited to 'scalalib')
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala21
-rw-r--r--scalalib/src/mill/scalalib/ScalaWorkerApi.scala33
2 files changed, 23 insertions, 31 deletions
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])
}