Index: packages/unittest/test/async_exception_with_future_test.dart |
diff --git a/packages/unittest/test/async_exception_with_future_test.dart b/packages/unittest/test/async_exception_with_future_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c5c445e12475fee3ba2c9d8d252e578f5ac370ef |
--- /dev/null |
+++ b/packages/unittest/test/async_exception_with_future_test.dart |
@@ -0,0 +1,42 @@ |
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library unittest.async_exception_with_future_test; |
+ |
+import 'dart:async'; |
+ |
+import 'package:metatest/metatest.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+void main() => initTests(_test); |
+ |
+void _test(message) { |
+ initMetatest(message); |
+ |
+ expectTestResults('async exception with future test', () { |
+ var tearDownHappened = false; |
+ |
+ tearDown(() { |
+ tearDownHappened = true; |
+ }); |
+ |
+ test('test', () { |
+ expect(tearDownHappened, isFalse); |
+ // The "throw" statement below should terminate the test immediately. |
+ // The framework should not wait for the future to complete. |
+ // tearDown should still execute. |
+ new Future.sync(() { |
+ throw "error!"; |
+ }); |
+ return new Completer().future; |
+ }); |
+ |
+ test('follow up', () { |
+ expect(tearDownHappened, isTrue); |
+ }); |
+ }, [ |
+ {'description': 'test', 'message': 'Caught error!', 'result': 'fail',}, |
+ {'description': 'follow up', 'result': 'pass',} |
+ ]); |
+} |