OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 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. |
| 4 // VMOptions=--compile_all --error_on_bad_type --error_on_bad_override --verbose
-debug |
| 5 |
| 6 import 'dart:async'; |
| 7 import 'dart:developer'; |
| 8 import 'package:observatory/service_io.dart'; |
| 9 import 'package:unittest/unittest.dart'; |
| 10 import 'test_helper.dart'; |
| 11 |
| 12 foo() {} |
| 13 |
| 14 doSync() { |
| 15 foo(); // Line 15 |
| 16 } |
| 17 |
| 18 doAsync() async { |
| 19 foo(); // Line 19 |
| 20 await null; |
| 21 } |
| 22 |
| 23 doAsyncStar() async* { |
| 24 foo(); // Line 24 |
| 25 yield null; |
| 26 } |
| 27 |
| 28 testeeDo() { |
| 29 debugger(); |
| 30 |
| 31 doSync(); |
| 32 |
| 33 doAsync(); |
| 34 |
| 35 doAsyncStar().listen((_) => null); |
| 36 } |
| 37 |
| 38 test(Isolate isolate) async { |
| 39 await isolate.rootLibrary.load(); |
| 40 var script = isolate.rootLibrary.scripts[0]; |
| 41 |
| 42 var bp1 = await isolate.addBreakpoint(script, 15); |
| 43 expect(bp1, isNotNull); |
| 44 expect(bp1 is Breakpoint, isTrue); |
| 45 |
| 46 var bp2 = await isolate.addBreakpoint(script, 19); |
| 47 expect(bp2, isNotNull); |
| 48 expect(bp2 is Breakpoint, isTrue); |
| 49 |
| 50 var bp3 = await isolate.addBreakpoint(script, 24); |
| 51 expect(bp3, isNotNull); |
| 52 expect(bp3 is Breakpoint, isTrue); |
| 53 |
| 54 isolate.resume(); |
| 55 |
| 56 var bp1_hit = new Completer(); |
| 57 var bp2_hit = new Completer(); |
| 58 var bp3_hit = new Completer(); |
| 59 |
| 60 var stream = await isolate.vm.getEventStream(VM.kDebugStream); |
| 61 stream.listen((ServiceEvent event) async { |
| 62 print("Event: $event"); |
| 63 if (event.kind == ServiceEvent.kPauseBreakpoint) { |
| 64 var bp = event.breakpoint; |
| 65 print('Hit $bp'); |
| 66 if (bp == bp1) { |
| 67 await stoppedAtLine(15)(isolate); |
| 68 print(event.asyncContinuation); |
| 69 expect(event.asyncContinuation.isNull, isTrue); |
| 70 isolate.resume(); |
| 71 bp1_hit.complete(null); |
| 72 } |
| 73 if (bp == bp2) { |
| 74 await stoppedAtLine(19)(isolate); |
| 75 print(event.asyncContinuation); |
| 76 expect(event.asyncContinuation.isClosure, isTrue); |
| 77 isolate.resume(); |
| 78 bp2_hit.complete(null); |
| 79 } |
| 80 if (bp == bp3) { |
| 81 await stoppedAtLine(24)(isolate); |
| 82 print(event.asyncContinuation); |
| 83 expect(event.asyncContinuation.isClosure, isTrue); |
| 84 isolate.resume(); |
| 85 bp3_hit.complete(null); |
| 86 } |
| 87 } |
| 88 }); |
| 89 |
| 90 await bp1_hit.future; |
| 91 await bp2_hit.future; |
| 92 await bp3_hit.future; |
| 93 } |
| 94 |
| 95 main(args) => runIsolateTests(args, [test], testeeConcurrent: testeeDo); |
OLD | NEW |