| OLD | NEW | 
|---|
| 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 library unittestTest; | 5 library unittest.async_exception_with_future_test; | 
| 6 | 6 | 
| 7 import 'dart:async'; | 7 import 'dart:async'; | 
| 8 import 'dart:isolate'; |  | 
| 9 | 8 | 
|  | 9 import 'package:metatest/metatest.dart'; | 
| 10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; | 
| 11 | 11 | 
| 12 part 'utils.dart'; | 12 void main() => initTests(_test); | 
| 13 | 13 | 
| 14 var testName = 'async exception with future test'; | 14 void _test(message) { | 
|  | 15   initMetatest(message); | 
| 15 | 16 | 
| 16 var testFunction = (TestConfiguration testConfig) { | 17   expectTestResults('async exception with future test', () { | 
| 17   tearDown(() { testConfig.teardown = 'teardown'; }); | 18     var tearDownHappened = false; | 
| 18   test(testName, () { |  | 
| 19     // The "throw" statement below should terminate the test immediately. |  | 
| 20     // The framework should not wait for the future to complete. |  | 
| 21     // tearDown should still execute. |  | 
| 22     _defer(() { throw "error!"; }); |  | 
| 23     return new Completer().future; |  | 
| 24   }); |  | 
| 25 }; |  | 
| 26 | 19 | 
| 27 final expected = buildStatusString(0, 1, 0, testName, | 20     tearDown(() { | 
| 28     message: 'Caught error!', teardown: 'teardown'); | 21       tearDownHappened = true; | 
|  | 22     }); | 
|  | 23 | 
|  | 24     test('test', () { | 
|  | 25       expect(tearDownHappened, isFalse); | 
|  | 26       // The "throw" statement below should terminate the test immediately. | 
|  | 27       // The framework should not wait for the future to complete. | 
|  | 28       // tearDown should still execute. | 
|  | 29       new Future.sync(() { | 
|  | 30         throw "error!"; | 
|  | 31       }); | 
|  | 32       return new Completer().future; | 
|  | 33     }); | 
|  | 34 | 
|  | 35     test('follow up', () { | 
|  | 36       expect(tearDownHappened, isTrue); | 
|  | 37     }); | 
|  | 38 | 
|  | 39   }, [{ | 
|  | 40     'description': 'test', | 
|  | 41     'message': 'Caught error!', | 
|  | 42     'result': 'fail', | 
|  | 43   }, { | 
|  | 44     'description': 'follow up', | 
|  | 45     'result': 'pass', | 
|  | 46   }]); | 
|  | 47 } | 
| OLD | NEW | 
|---|