mirror of https://github.com/sbt/sbt.git
commit
a43c18e4f9
|
|
@ -0,0 +1,8 @@
|
||||||
|
testFrameworks += new TestFramework("utest.runner.Framework")
|
||||||
|
|
||||||
|
lazy val root = (project in file(".")).
|
||||||
|
settings(
|
||||||
|
scalaVersion := "2.12.4",
|
||||||
|
libraryDependencies += "com.lihaoyi" %% "utest" % "0.6.4" % Test,
|
||||||
|
fork in Test := true
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
import utest._
|
||||||
|
|
||||||
|
import utest._
|
||||||
|
import utest.framework._
|
||||||
|
|
||||||
|
import scala.concurrent.{ ExecutionContext, Promise }
|
||||||
|
import scala.util.Success
|
||||||
|
|
||||||
|
object ForkAsyncTest extends TestSuite {
|
||||||
|
val g = ExecutionContext.global
|
||||||
|
val n = 10
|
||||||
|
val (testNames, promises) = (1 to n).map(i => Tree(s"$i") -> Promise[Unit]).unzip
|
||||||
|
val testTrees = promises.zipWithIndex.map { case (p, i) =>
|
||||||
|
new TestCallTree(Left {
|
||||||
|
if (i == (n - 1)) promises.foreach(p => g.execute(() => p.tryComplete(Success(()))))
|
||||||
|
p.future
|
||||||
|
})
|
||||||
|
}
|
||||||
|
val tests =
|
||||||
|
Tests(nameTree = Tree("async", testNames: _*), callTree = new TestCallTree(Right(testTrees)))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
> test
|
||||||
|
|
@ -17,6 +17,7 @@ import java.net.Socket;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
|
|
@ -294,7 +295,7 @@ final public class ForkMain {
|
||||||
Task[] nestedTasks;
|
Task[] nestedTasks;
|
||||||
final TaskDef taskDef = task.taskDef();
|
final TaskDef taskDef = task.taskDef();
|
||||||
try {
|
try {
|
||||||
final List<ForkEvent> eventList = new ArrayList<ForkEvent>();
|
final Collection<ForkEvent> eventList = new ConcurrentLinkedDeque<ForkEvent>();
|
||||||
final EventHandler handler = new EventHandler() { public void handle(final Event e){ eventList.add(new ForkEvent(e)); } };
|
final EventHandler handler = new EventHandler() { public void handle(final Event e){ eventList.add(new ForkEvent(e)); } };
|
||||||
logDebug(os, " Running " + taskDef);
|
logDebug(os, " Running " + taskDef);
|
||||||
nestedTasks = task.execute(handler, loggers);
|
nestedTasks = task.execute(handler, loggers);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue