summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/mill/util/AggWrapper.scala2
-rw-r--r--scalalib/src/mill/scalalib/ScalaModule.scala16
-rw-r--r--scalaworker/src/mill/scalaworker/ScalaWorker.scala25
3 files changed, 27 insertions, 16 deletions
diff --git a/core/src/mill/util/AggWrapper.scala b/core/src/mill/util/AggWrapper.scala
index c2994a9a..eefe6224 100644
--- a/core/src/mill/util/AggWrapper.scala
+++ b/core/src/mill/util/AggWrapper.scala
@@ -24,6 +24,7 @@ sealed class AggWrapper(strictUniqueness: Boolean){
def reverse: Agg[V]
def zip[T](other: Agg[T]): Agg[(V, T)]
def ++[T >: V](other: TraversableOnce[T]): Agg[T]
+ def length: Int
}
object Agg{
@@ -88,6 +89,7 @@ sealed class AggWrapper(strictUniqueness: Boolean){
def zip[T](other: Agg[T]) = Agg.from(items.zip(other.items))
def ++[T >: V](other: TraversableOnce[T]) = Agg.from(items ++ other)
+ def length: Int = set0.size
// Members declared in scala.collection.GenTraversableOnce
def isTraversableAgain: Boolean = items.isTraversableAgain
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala
index c06fb8f3..e5a20e7e 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/mill/scalalib/ScalaModule.scala
@@ -375,14 +375,14 @@ trait TestModule extends ScalaModule with TaskModule {
classPath = scalaWorker.classpath(),
jvmArgs = forkArgs(),
envArgs = forkEnv(),
- mainArgs = Seq(
- testFrameworks().mkString(" "),
- runClasspath().map(_.path).mkString(" "),
- Seq(compile().classes.path).mkString(" "),
- args.mkString(" "),
- outputPath.toString,
- T.ctx().log.colored.toString
- ),
+ mainArgs =
+ Seq(testFrameworks().length.toString) ++
+ testFrameworks() ++
+ Seq(runClasspath().length.toString) ++
+ runClasspath().map(_.path.toString) ++
+ Seq(args.length.toString) ++
+ args ++
+ Seq(outputPath.toString, T.ctx().log.colored.toString, compile().classes.path.toString),
workingDir = forkWorkingDir
)
diff --git a/scalaworker/src/mill/scalaworker/ScalaWorker.scala b/scalaworker/src/mill/scalaworker/ScalaWorker.scala
index ca20ccf1..58f93f01 100644
--- a/scalaworker/src/mill/scalaworker/ScalaWorker.scala
+++ b/scalaworker/src/mill/scalaworker/ScalaWorker.scala
@@ -36,15 +36,25 @@ object ScalaWorker{
def main(args: Array[String]): Unit = {
try{
- val (frameworks, classpath, testCp, arguments, outputPath, colored) = args match {
- case Array(fs, cp, tcp, op, c) => (fs, cp, tcp, "", op, c)
- case Array(fs, cp, tcp, as, op, c) => (fs, cp, tcp, as, op, c)
+ var i = 0
+ def readArray() = {
+ val count = args(i).toInt
+ val slice = args.slice(i + 1, i + count + 1)
+ i = i + count + 1
+ slice
}
+ val frameworks = readArray()
+ val classpath = readArray()
+ val arguments = readArray()
+ val outputPath = args(i + 0)
+ val colored = args(i + 1)
+ val testCp = args(i + 2)
+
val result = new ScalaWorker(null, null).runTests(
- frameworkInstances = TestRunner.frameworks(frameworks.split(" ")),
- entireClasspath = Agg.from(classpath.split(" ").map(Path(_))),
- testClassfilePath = Agg.from(testCp.split(" ").map(Path(_))),
- args = arguments match{ case "" => Nil case x => x.split(" ").toList }
+ frameworkInstances = TestRunner.frameworks(frameworks),
+ entireClasspath = Agg.from(classpath.map(Path(_))),
+ testClassfilePath = Agg(Path(testCp)),
+ args = arguments
)(new PrintLogger(
colored == "true",
if(colored == "true") Colors.Default
@@ -251,7 +261,6 @@ class ScalaWorker(ctx0: mill.util.Ctx,
testClassfilePath: Agg[Path],
args: Seq[String])
(implicit ctx: mill.util.Ctx.Log): (String, Seq[Result]) = {
-
Jvm.inprocess(entireClasspath, classLoaderOverrideSbtTesting = true, cl => {
val frameworks = frameworkInstances(cl)