Index: tests/lib/async/future_test.dart |
diff --git a/tests/lib/async/future_test.dart b/tests/lib/async/future_test.dart |
index 71c509b6fd3973e7790df4418d8b1e55dd7bcb72..ef879670847ce71cf5edc1a73382c5ad37e760a9 100644 |
--- a/tests/lib/async/future_test.dart |
+++ b/tests/lib/async/future_test.dart |
@@ -879,7 +879,6 @@ void testWaitCleanUpError() { |
void testWaitSyncError() { |
var cms = const Duration(milliseconds: 100); |
var cleanups = new List.filled(3, false); |
- var uncaughts = new List.filled(3, false); |
asyncStart(); |
asyncStart(); |
runZoned(() { |
@@ -896,6 +895,40 @@ void testWaitSyncError() { |
}); |
} |
+void testWaitSyncError2() { |
+ asyncStart(); |
+ Future.wait([null]).catchError((e, st) { |
+ // Makes sure that the `catchError` is invoked. |
+ // Regression test: an earlier version of `Future.wait` would propagate |
+ // the error too soon for the code to install an error handler. |
+ // `testWaitSyncError` didn't show this problem, because the `runZoned` |
+ // was already installed. |
+ asyncEnd(); |
+ }); |
+} |
+ |
+void testWaitSyncError3() { |
Lasse Reichstein Nielsen
2016/09/06 09:53:27
Add comment saying what you are testing: That zone
floitsch
2016/09/06 09:57:15
Done.
|
+ var caughtError; |
+ var count = 0; |
+ |
+ AsyncError errorCallback( |
+ Zone self, ZoneDelegate parent, Zone zone, Object error, |
+ StackTrace stackTrace) { |
+ Expect.equals(0, count); |
+ count++; |
+ caughtError = error; |
+ return parent.errorCallback(zone, error, stackTrace); |
+ } |
+ |
+ asyncStart(); |
+ runZoned(() { |
+ Future.wait([null]).catchError((e, st) { |
+ Expect.isNotNull(caughtError); |
Lasse Reichstein Nielsen
2016/09/06 09:53:27
Check that caughtError is identical to e.
floitsch
2016/09/06 09:57:16
Done.
|
+ asyncEnd(); |
+ }); |
+ }, zoneSpecification: new ZoneSpecification(errorCallback: errorCallback)); |
+} |
+ |
void testBadFuture() { |
var bad = new BadFuture(); |
// Completing with bad future (then call throws) puts error in result. |
@@ -1096,6 +1129,8 @@ main() { |
testWaitCleanUp(); |
testWaitCleanUpError(); |
testWaitSyncError(); |
+ testWaitSyncError2(); |
+ testWaitSyncError3(); |
testBadFuture(); |