Chromium Code Reviews| 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(); |