summaryrefslogtreecommitdiff
path: root/scalalib/src
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-04-08 15:46:22 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2018-04-08 15:46:22 -0700
commitd94bb5eae6cd5f75d3cac1b69518b80c0a90169b (patch)
treec21749c35fdc5b193ad16c6ea9c01ac4c1da2cc9 /scalalib/src
parentbcdb1aaf941a00a52fc854a5fbced81b2fda96d9 (diff)
downloadmill-d94bb5eae6cd5f75d3cac1b69518b80c0a90169b.tar.gz
mill-d94bb5eae6cd5f75d3cac1b69518b80c0a90169b.tar.bz2
mill-d94bb5eae6cd5f75d3cac1b69518b80c0a90169b.zip
Properly support test frameworks which spawn child tasks
Needed to fix https://github.com/lihaoyi/mill/issues/286
Diffstat (limited to 'scalalib/src')
-rw-r--r--scalalib/src/mill/scalalib/Lib.scala9
1 files changed, 5 insertions, 4 deletions
diff --git a/scalalib/src/mill/scalalib/Lib.scala b/scalalib/src/mill/scalalib/Lib.scala
index 3eb2defd..07d88891 100644
--- a/scalalib/src/mill/scalalib/Lib.scala
+++ b/scalalib/src/mill/scalalib/Lib.scala
@@ -219,11 +219,12 @@ object Lib{
val tasks = runner.tasks(
for ((cls, fingerprint) <- testClasses.toArray)
- yield new TaskDef(cls.getName.stripSuffix("$"), fingerprint, true, Array(new SuiteSelector))
+ yield new TaskDef(cls.getName.stripSuffix("$"), fingerprint, true, Array(new SuiteSelector))
)
- for (t <- tasks) {
- t.execute(
+ val taskQueue = tasks.to[mutable.Queue]
+ while (taskQueue.nonEmpty){
+ val next = taskQueue.dequeue().execute(
new EventHandler {
def handle(event: Event) = events.append(event)
},
@@ -242,6 +243,7 @@ object Lib{
def info(msg: String) = ctx.log.outputStream.println(msg)
})
)
+ taskQueue.enqueue(next:_*)
}
ctx.log.outputStream.println(runner.done())
}
@@ -299,7 +301,6 @@ object Lib{
cls.isAnnotationPresent(annotationCls) ||
cls.getDeclaredMethods.exists(_.isAnnotationPresent(annotationCls))
)
-
}.map { f => (cls, f) }
}
}