Permalink
Browse files

SI-7029 - Make test more robust

  • Loading branch information...
1 parent 3f78bee commit 5275baee6c563418f53abd2486764be08916c8c5 @phaller phaller committed Feb 1, 2013
Showing with 12 additions and 24 deletions.
  1. +12 −24 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 }

0 comments on commit 5275bae

Please sign in to comment.