Chromium Code Reviews| Index: runtime/tests/vm/dart/isolate_unhandled_exception_uri_test.dart |
| =================================================================== |
| --- runtime/tests/vm/dart/isolate_unhandled_exception_uri_test.dart (revision 0) |
| +++ runtime/tests/vm/dart/isolate_unhandled_exception_uri_test.dart (revision 0) |
| @@ -0,0 +1,34 @@ |
| +import 'dart:isolate'; |
| +import 'dart:io'; |
| + |
| +// Tests that isolate code in another script keeps message handling working |
| +// after throwing an unhandled exception, if it has a function called |
| +// unhandledExceptionCallback that returns true (continue handling). |
| + |
| +// Note: this test will hang if an uncaught exception isn't handled, |
| +// either by an error in the callback or it returning false. |
| + |
| +void main() { |
| + var isolate_port = spawnUri('isolate_unhandled_exception_uri_helper.dart'); |
| + |
| + // Send a message that will cause an ignorable exception to be thrown. |
| + Future f = isolate_port.call('throw exception'); |
|
siva
2012/12/13 18:30:38
Is this a bug in the library implementation becaus
|
| + f.onComplete((future) { |
| + // Exception wasn't ignored as it was supposed to be. |
| + print('failed handling exception'); |
| + exit(1); |
| + }); |
| + |
| + // Verify that isolate can still handle messages. |
| + isolate_port.call('hi').onComplete((future) { |
| + if (future.exception != null) { |
| + print('unhandled exception: ${future.exception}'); |
| + exit(1); |
| + } |
| + if (future.value != 'hello') { |
| + print('unexpected response: ${future.value}'); |
| + exit(1); |
| + } |
| + exit(0); |
| + }); |
| +} |