| Index: runtime/observatory/tests/service/pause_on_exceptions_test.dart
|
| diff --git a/runtime/observatory/tests/service/pause_on_exceptions_test.dart b/runtime/observatory/tests/service/pause_on_exceptions_test.dart
|
| index da2e2503a217076885a2d83b6a7f6f9c9a276f1e..61668d7f8ec40d61d468567e54af7a62ea204258 100644
|
| --- a/runtime/observatory/tests/service/pause_on_exceptions_test.dart
|
| +++ b/runtime/observatory/tests/service/pause_on_exceptions_test.dart
|
| @@ -25,86 +25,82 @@ doUncaught() {
|
| }
|
|
|
| var tests = [
|
| -
|
| -(Isolate isolate) async {
|
| - var lib = await isolate.rootLibrary.reload();
|
| -
|
| - var onPaused = null;
|
| - var onResume = null;
|
| -
|
| - var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
| - var subscription;
|
| - subscription = stream.listen((ServiceEvent event) {
|
| - print("Event $event");
|
| - if (event.kind == ServiceEvent.kPauseException) {
|
| - if (onPaused == null) throw "Unexpected pause event $event";
|
| - var t = onPaused;
|
| - onPaused = null;
|
| - t.complete(event);
|
| - }
|
| - if (event.kind == ServiceEvent.kResume) {
|
| - if (onResume == null) throw "Unexpected resume event $event";
|
| - var t = onResume;
|
| - onResume = null;
|
| - t.complete(event);
|
| - }
|
| - });
|
| -
|
| - test(String pauseMode,
|
| - String expression,
|
| - bool shouldPause,
|
| - bool shouldBeCaught) async {
|
| - print("Evaluating $expression with pause on $pauseMode exception");
|
| -
|
| - expect((await isolate.setExceptionPauseMode(pauseMode)) is DartError,
|
| - isFalse);
|
| -
|
| - var t;
|
| - if (shouldPause) {
|
| - t = new Completer();
|
| - onPaused = t;
|
| - }
|
| - var fres = lib.evaluate(expression);
|
| - if (shouldPause) {
|
| - await t.future;
|
| -
|
| - var stack = await isolate.getStack();
|
| - expect(stack['frames'][0].function.name, equals('doThrow'));
|
| - // Ugh, no .line. expect(stack['frames'][0].location.line, equals(17));
|
| -
|
| - t = new Completer();
|
| - onResume = t;
|
| - isolate.resume();
|
| - await t.future;
|
| + (Isolate isolate) async {
|
| + var lib = await isolate.rootLibrary.reload();
|
| +
|
| + var onPaused = null;
|
| + var onResume = null;
|
| +
|
| + var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
| + var subscription;
|
| + subscription = stream.listen((ServiceEvent event) {
|
| + print("Event $event");
|
| + if (event.kind == ServiceEvent.kPauseException) {
|
| + if (onPaused == null) throw "Unexpected pause event $event";
|
| + var t = onPaused;
|
| + onPaused = null;
|
| + t.complete(event);
|
| + }
|
| + if (event.kind == ServiceEvent.kResume) {
|
| + if (onResume == null) throw "Unexpected resume event $event";
|
| + var t = onResume;
|
| + onResume = null;
|
| + t.complete(event);
|
| + }
|
| + });
|
| +
|
| + test(String pauseMode, String expression, bool shouldPause,
|
| + bool shouldBeCaught) async {
|
| + print("Evaluating $expression with pause on $pauseMode exception");
|
| +
|
| + expect((await isolate.setExceptionPauseMode(pauseMode)) is DartError,
|
| + isFalse);
|
| +
|
| + var t;
|
| + if (shouldPause) {
|
| + t = new Completer();
|
| + onPaused = t;
|
| + }
|
| + var fres = lib.evaluate(expression);
|
| + if (shouldPause) {
|
| + await t.future;
|
| +
|
| + var stack = await isolate.getStack();
|
| + expect(stack['frames'][0].function.name, equals('doThrow'));
|
| + // Ugh, no .line. expect(stack['frames'][0].location.line, equals(17));
|
| +
|
| + t = new Completer();
|
| + onResume = t;
|
| + isolate.resume();
|
| + await t.future;
|
| + }
|
| +
|
| + var res = await fres;
|
| + print(res);
|
| + if (shouldBeCaught) {
|
| + expect(res.isInstance, isTrue);
|
| + expect(res.isString, isTrue);
|
| + expect(res.valueAsString, equals("end of doCaught"));
|
| + } else {
|
| + expect(res.isError, isTrue);
|
| + await res.load(); // Weird?
|
| + expect(res.exception.isInstance, isTrue);
|
| + expect(res.exception.isString, isTrue);
|
| + expect(res.exception.valueAsString, equals("TheException"));
|
| + }
|
| }
|
|
|
| - var res = await fres;
|
| - print(res);
|
| - if (shouldBeCaught) {
|
| - expect(res.isInstance, isTrue);
|
| - expect(res.isString, isTrue);
|
| - expect(res.valueAsString, equals("end of doCaught"));
|
| - } else {
|
| - expect(res.isError, isTrue);
|
| - await res.load(); // Weird?
|
| - expect(res.exception.isInstance, isTrue);
|
| - expect(res.exception.isString, isTrue);
|
| - expect(res.exception.valueAsString, equals("TheException"));
|
| - }
|
| - }
|
| -
|
| - await test("All", "doCaught()", true, true);
|
| - await test("All", "doUncaught()", true, false);
|
| -
|
| - await test("Unhandled", "doCaught()", false, true);
|
| - await test("Unhandled", "doUncaught()", true, false);
|
| + await test("All", "doCaught()", true, true);
|
| + await test("All", "doUncaught()", true, false);
|
|
|
| - await test("None", "doCaught()", false, true);
|
| - await test("None", "doUncaught()", false, false);
|
| + await test("Unhandled", "doCaught()", false, true);
|
| + await test("Unhandled", "doUncaught()", true, false);
|
|
|
| - subscription.cancel();
|
| -},
|
| + await test("None", "doCaught()", false, true);
|
| + await test("None", "doUncaught()", false, false);
|
|
|
| + subscription.cancel();
|
| + },
|
| ];
|
|
|
| main(args) => runIsolateTests(args, tests);
|
|
|