mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 08:31:29 +00:00
Avoid permanently paused isolates
These tests have some exceptions caused by missing fields on the dynamic variable. The exceptions cause the `isolate.resume()` call to not run, which also cause the test body to not complete. Currently this is masked by the test runner, which immediately ignores the test body once the first error occurs. That behavior is changing, and a failure will not immediately end a test when the body is still running. https://github.com/dart-lang/test/pull/1815 Some of these tests are currently are expected to fail, but not to timeout. Fix the test implementations to more reliably complete the test body, even when the test had an error. This does not fix the tests themselves, it maintains the current pattern of failure, even after updating the test runner. - Use `Stream.firstWhere` over cancelling the stream subscription after the first breakpoint. - Use `Future.whenComplete` to ensure the isolate is always unpaused, including after an exception in the expectations. Tested: Passes with updated test runner in https://dart-review.googlesource.com/c/sdk/+/275401/4 Change-Id: If5a7f0264c580cb38bcc1bd95c035aaf5644124b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275787 Auto-Submit: Nate Bosch <nbosch@google.com> Reviewed-by: Ben Konyi <bkonyi@google.com> Commit-Queue: Nate Bosch <nbosch@google.com>
This commit is contained in:
parent
f181b50249
commit
f065dca391
|
@ -79,39 +79,36 @@ Future testMethod(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: ok
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: ok
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: ok
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: ok
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate('new C().method(3)');
|
||||
print("Result $result");
|
||||
|
@ -128,39 +125,36 @@ Future testMethod2(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam');
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp');
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam');
|
||||
expect(r.valueAsString, equals('7'));
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp');
|
||||
expect(r.valueAsString, equals('8'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam');
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp');
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam');
|
||||
expect(r.valueAsString, equals('7'));
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp');
|
||||
expect(r.valueAsString, equals('8'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate('C.method2(3)');
|
||||
print("Result $result");
|
||||
|
@ -177,31 +171,28 @@ Future testMethod3(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r.clazz.name, equals('C'));
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r.valueAsString, equals('1'));
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r.clazz.name, equals('C'));
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r.valueAsString, equals('1'));
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate('new C().method3(3)');
|
||||
print("Result $result");
|
||||
|
@ -219,39 +210,36 @@ Future testMethod4(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: continued
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: continued
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
dynamic frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: continued
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: continued
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate(
|
||||
'(){ new C().method4(3); C.closureWithReturnedHome(7); }()');
|
||||
|
|
|
@ -81,39 +81,36 @@ Future testMethod(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: ok
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: ok
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: ok
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: ok
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate('new C().method(3)');
|
||||
print("Result $result");
|
||||
|
@ -130,39 +127,36 @@ Future testMethod2(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam');
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp');
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam');
|
||||
expect(r.valueAsString, equals('7'));
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp');
|
||||
expect(r.valueAsString, equals('8'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r is DartError, isTrue);
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam');
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp');
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam');
|
||||
expect(r.valueAsString, equals('7'));
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp');
|
||||
expect(r.valueAsString, equals('8'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate('C.method2(3)');
|
||||
print("Result $result");
|
||||
|
@ -179,31 +173,28 @@ Future testMethod3(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r.clazz.name, equals('C'));
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r.valueAsString, equals('1'));
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123');
|
||||
expect(r.valueAsString, equals('123'));
|
||||
r = await isolate.evalFrame(frameNumber, 'this');
|
||||
expect(r.clazz.name, equals('C'));
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar');
|
||||
expect(r.valueAsString, equals('1'));
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar');
|
||||
expect(r.valueAsString, equals('2'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam');
|
||||
expect(r.valueAsString, equals('3'));
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp');
|
||||
expect(r.valueAsString, equals('4'));
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt');
|
||||
expect(r.isClosure, isTrue);
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate('new C().method3(3)');
|
||||
print("Result $result");
|
||||
|
@ -221,39 +212,36 @@ Future testMethod4(Isolate isolate) async {
|
|||
|
||||
bool hitBreakpoint = false;
|
||||
var stream = await isolate.vm.getEventStream(VM.kDebugStream);
|
||||
var sub;
|
||||
sub = stream.listen((ServiceEvent event) async {
|
||||
stream.firstWhere((event) {
|
||||
print("Event $event");
|
||||
if (event.kind == ServiceEvent.kPauseBreakpoint) {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: continued
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: continued
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
return event.kind == ServiceEvent.kPauseBreakpoint;
|
||||
}).then((event) async {
|
||||
var frameNumber = 1, r;
|
||||
r = await isolate.evalFrame(frameNumber, '123'); //# instance: continued
|
||||
expect(r.valueAsString, equals('123')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'this'); //# scope: continued
|
||||
expect(r.clazz.name, equals('C')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'instVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('1')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'classVar'); //# instance: continued
|
||||
expect(r.valueAsString, equals('2')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('3')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'methodTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('4')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerParam'); //# scope: continued
|
||||
expect(r.valueAsString, equals('5')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'outerTemp'); //# scope: continued
|
||||
expect(r.valueAsString, equals('6')); //# scope: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerParam'); //# instance: continued
|
||||
expect(r.valueAsString, equals('7')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'innerTemp'); //# instance: continued
|
||||
expect(r.valueAsString, equals('8')); //# instance: continued
|
||||
r = await isolate.evalFrame(frameNumber, 'math.sqrt'); //# instance: continued
|
||||
expect(r.isClosure, isTrue); //# instance: continued
|
||||
|
||||
hitBreakpoint = true;
|
||||
sub.cancel(); // Do not handle events for the other tests.
|
||||
isolate.resume();
|
||||
}
|
||||
});
|
||||
hitBreakpoint = true;
|
||||
}).whenComplete(isolate.resume);
|
||||
|
||||
var result = await rootLib.evaluate(
|
||||
'(){ new C().method4(3); C.closureWithReturnedHome(7); }()');
|
||||
|
|
Loading…
Reference in a new issue