summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2012-07-19 10:33:48 -0700
committerAdriaan Moors <adriaan.moors@epfl.ch>2012-07-19 10:33:48 -0700
commitfb3a36916fa2f0053bca7d572d48494171f03c6a (patch)
tree5266d38c18d7a498f76617f9a02bed7ad2411858 /test
parenta723461cb21ac11dca99e9393a6ed03589ab8525 (diff)
parenta6aaee845174c3102d4602d16dab9fd673bf4f77 (diff)
downloadscala-fb3a36916fa2f0053bca7d572d48494171f03c6a.tar.gz
scala-fb3a36916fa2f0053bca7d572d48494171f03c6a.tar.bz2
scala-fb3a36916fa2f0053bca7d572d48494171f03c6a.zip
Merge pull request #947 from phaller/topic/sip14-critical-fixes-blocking
Critical bugfixes/leak fixes/API corrections + ScalaDoc for SIP-14
Diffstat (limited to 'test')
-rw-r--r--test/files/jvm/future-spec/FutureTests.scala6
-rw-r--r--test/files/jvm/future-spec/PromiseTests.scala9
-rw-r--r--test/files/jvm/scala-concurrent-tck.scala20
3 files changed, 19 insertions, 16 deletions
diff --git a/test/files/jvm/future-spec/FutureTests.scala b/test/files/jvm/future-spec/FutureTests.scala
index ca9ff5090f..30e1a722bf 100644
--- a/test/files/jvm/future-spec/FutureTests.scala
+++ b/test/files/jvm/future-spec/FutureTests.scala
@@ -507,6 +507,12 @@ object FutureTests extends MinimalScalaTest {
}
Await.ready(complex, defaultTimeout).isCompleted mustBe (true)
}
+
+ "should not throw when Await.ready" in {
+ val expected = try Right(5 / 0) catch { case a: ArithmeticException => Left(a) }
+ val f = future(5).map(_ / 0)
+ Await.ready(f, defaultTimeout).value.get.toString mustBe expected.toString
+ }
}
diff --git a/test/files/jvm/future-spec/PromiseTests.scala b/test/files/jvm/future-spec/PromiseTests.scala
index 49bc642b57..d15bb31f36 100644
--- a/test/files/jvm/future-spec/PromiseTests.scala
+++ b/test/files/jvm/future-spec/PromiseTests.scala
@@ -78,7 +78,7 @@ object PromiseTests extends MinimalScalaTest {
"contain a value" in { f((future, result) => future.value mustBe (Some(Right(result)))) }
- "return result with 'blocking'" in { f((future, result) => blocking(future, defaultTimeout) mustBe (result)) }
+ "return when ready with 'Await.ready'" in { f((future, result) => Await.ready(future, defaultTimeout).isCompleted mustBe (true)) }
"return result with 'Await.result'" in { f((future, result) => Await.result(future, defaultTimeout) mustBe (result)) }
@@ -163,12 +163,9 @@ object PromiseTests extends MinimalScalaTest {
})
}
- "throw exception with 'blocking'" in {
+ "throw not throw exception with 'Await.ready'" in {
f {
- (future, message) =>
- intercept[E] {
- blocking(future, defaultTimeout)
- }.getMessage mustBe (message)
+ (future, message) => Await.ready(future, defaultTimeout).isCompleted mustBe (true)
}
}
diff --git a/test/files/jvm/scala-concurrent-tck.scala b/test/files/jvm/scala-concurrent-tck.scala
index 5c9c71f3f8..1209b710b0 100644
--- a/test/files/jvm/scala-concurrent-tck.scala
+++ b/test/files/jvm/scala-concurrent-tck.scala
@@ -4,7 +4,9 @@ import scala.concurrent.{
TimeoutException,
SyncVar,
ExecutionException,
- ExecutionContext
+ ExecutionContext,
+ CanAwait,
+ Await
}
import scala.concurrent.{ future, promise, blocking }
import scala.util.{ Try, Success, Failure }
@@ -647,7 +649,7 @@ trait FutureProjections extends TestBase {
val f = future {
throw cause
}
- assert(blocking(f.failed, Duration(500, "ms")) == cause)
+ assert(Await.result(f.failed, Duration(500, "ms")) == cause)
done()
}
@@ -655,7 +657,7 @@ trait FutureProjections extends TestBase {
done =>
val f = future { 0 }
try {
- blocking(f.failed, Duration(500, "ms"))
+ Await.result(f.failed, Duration(500, "ms"))
assert(false)
} catch {
case nsee: NoSuchElementException => done()
@@ -678,7 +680,7 @@ trait Blocking extends TestBase {
def testAwaitSuccess(): Unit = once {
done =>
val f = future { 0 }
- blocking(f, Duration(500, "ms"))
+ Await.result(f, Duration(500, "ms"))
done()
}
@@ -689,7 +691,7 @@ trait Blocking extends TestBase {
throw cause
}
try {
- blocking(f, Duration(500, "ms"))
+ Await.result(f, Duration(500, "ms"))
assert(false)
} catch {
case t =>
@@ -708,7 +710,7 @@ trait BlockContexts extends TestBase {
import scala.concurrent.{ Await, Awaitable, BlockContext }
private def getBlockContext(body: => BlockContext): BlockContext = {
- blocking(Future { body }, Duration(500, "ms"))
+ Await.result(Future { body }, Duration(500, "ms"))
}
// test outside of an ExecutionContext
@@ -727,8 +729,7 @@ trait BlockContexts extends TestBase {
def testPushCustom(): Unit = {
val orig = BlockContext.current
val customBC = new BlockContext() {
- override def internalBlockingCall[T](awaitable: Awaitable[T], atMost: Duration): T =
- orig.internalBlockingCall(awaitable, atMost)
+ override def blockOn[T](thunk: =>T)(implicit permission: CanAwait): T = orig.blockOn(thunk)
}
val bc = getBlockContext({
@@ -744,8 +745,7 @@ trait BlockContexts extends TestBase {
def testPopCustom(): Unit = {
val orig = BlockContext.current
val customBC = new BlockContext() {
- override def internalBlockingCall[T](awaitable: Awaitable[T], atMost: Duration): T =
- orig.internalBlockingCall(awaitable, atMost)
+ override def blockOn[T](thunk: =>T)(implicit permission: CanAwait): T = orig.blockOn(thunk)
}
val bc = getBlockContext({