diff options
-rw-r--r-- | test/files/jvm/future-spec/FutureTests.scala | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/test/files/jvm/future-spec/FutureTests.scala b/test/files/jvm/future-spec/FutureTests.scala index ae2e72bf96..0efa83fbd9 100644 --- a/test/files/jvm/future-spec/FutureTests.scala +++ b/test/files/jvm/future-spec/FutureTests.scala @@ -70,33 +70,21 @@ object FutureTests extends MinimalScalaTest { //FIXME should check } } - - "A future with global ExecutionContext" should { - import ExecutionContext.Implicits._ - "output uncaught exceptions" in { - import java.io.{ ByteArrayOutputStream, PrintStream } - - val baos = new ByteArrayOutputStream(1 << 16) { def isEmpty: Boolean = count == 0 } - val tmpErr = new PrintStream(baos) - - def assertPrintedToErr(t: Throwable): Unit = { - t.printStackTrace(tmpErr) - tmpErr.flush() - val expected = baos.toByteArray.toIndexedSeq - baos.reset() - val f = Future(throw t) - val d = Deadline.now + 5.seconds - while(d.hasTimeLeft && baos.isEmpty) Thread.sleep(10) - baos.toByteArray.toIndexedSeq mustBe (expected) - } + "The default ExecutionContext" should { + "report uncaught exceptions" in { + val p = Promise[Throwable]() + val logThrowable: Throwable => Unit = p.trySuccess(_) + val ec: ExecutionContext = ExecutionContext.fromExecutor(null, logThrowable) - val oldErr = System.err - System.setErr(tmpErr) - try { - assertPrintedToErr(new NotImplementedError("foo")) - } finally System.setErr(oldErr) + val t = new NotImplementedError("foo") + val f = Future(throw t)(ec) + Await.result(p.future, 2.seconds) mustBe t } + } + + "A future with global ExecutionContext" should { + import ExecutionContext.Implicits._ "compose with for-comprehensions" in { def async(x: Int) = future { (x * 2).toString } |