From 4c6cb837a4502be5c55d6eaf7ebeabbde48dc8a8 Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Mon, 8 Aug 2022 14:03:41 -0700 Subject: [PATCH 1/2] Migrate build_daemon_callstack_test and build_daemon_breakpoint_test --- dwds/test/build_daemon_breakpoint_test.dart | 68 ++++++++++----------- dwds/test/build_daemon_callstack_test.dart | 50 ++++++++------- 2 files changed, 58 insertions(+), 60 deletions(-) diff --git a/dwds/test/build_daemon_breakpoint_test.dart b/dwds/test/build_daemon_breakpoint_test.dart index 03f8f20f2..fcb618ab7 100644 --- a/dwds/test/build_daemon_breakpoint_test.dart +++ b/dwds/test/build_daemon_breakpoint_test.dart @@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -// @dart = 2.9 - @TestOn('vm') import 'dart:async'; @@ -38,32 +36,32 @@ void main() { group('breakpoint', () { VM vm; - Isolate isolate; + late Isolate isolate; ScriptList scripts; - ScriptRef mainScript; - Stream stream; + late ScriptRef mainScript; + late Stream stream; setUp(() async { vm = await service.getVM(); - isolate = await service.getIsolate(vm.isolates.first.id); - scripts = await service.getScripts(isolate.id); + isolate = await service.getIsolate(vm.isolates!.first.id!); + scripts = await service.getScripts(isolate.id!); await service.streamListen('Debug'); stream = service.onEvent('Debug'); - mainScript = scripts.scripts - .firstWhere((each) => each.uri.contains('main.dart')); + mainScript = scripts.scripts! + .firstWhere((each) => each.uri!.contains('main.dart')); }); tearDown(() async { - await service.resume(isolate.id); + await service.resume(isolate.id!); }); test('set breakpoint', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id, mainScript); + 'printLocal', isolate.id!, mainScript); final bp = await service.addBreakpointWithScriptUri( - isolate.id, mainScript.uri, line); + isolate.id!, mainScript.uri!, line); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); @@ -71,14 +69,14 @@ void main() { expect(bp, isNotNull); // Remove breakpoint so it doesn't impact other tests. - await service.removeBreakpoint(isolate.id, bp.id); + await service.removeBreakpoint(isolate.id!, bp.id!); }); test('set breakpoint again', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id, mainScript); + 'printLocal', isolate.id!, mainScript); final bp = await service.addBreakpointWithScriptUri( - isolate.id, mainScript.uri, line); + isolate.id!, mainScript.uri!, line); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); @@ -86,16 +84,16 @@ void main() { expect(bp, isNotNull); // Remove breakpoint so it doesn't impact other tests. - await service.removeBreakpoint(isolate.id, bp.id); + await service.removeBreakpoint(isolate.id!, bp.id!); }); test('set existing breakpoint succeeds', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id, mainScript); + 'printLocal', isolate.id!, mainScript); final bp1 = await service.addBreakpointWithScriptUri( - isolate.id, mainScript.uri, line); + isolate.id!, mainScript.uri!, line); final bp2 = await service.addBreakpointWithScriptUri( - isolate.id, mainScript.uri, line); + isolate.id!, mainScript.uri!, line); expect(bp1, equals(bp2)); expect(bp1, isNotNull); @@ -103,23 +101,25 @@ void main() { await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); - var currentIsolate = await service.getIsolate(isolate.id); + var currentIsolate = await service.getIsolate(isolate.id!); expect(currentIsolate.breakpoints, containsAll([bp1])); // Remove breakpoints so they don't impact other tests. - await service.removeBreakpoint(isolate.id, bp1.id); + await service.removeBreakpoint(isolate.id!, bp1.id!); - currentIsolate = await service.getIsolate(isolate.id); + currentIsolate = await service.getIsolate(isolate.id!); expect(currentIsolate.breakpoints, isEmpty); }); test('set breakpoints at the same line simultaneously succeeds', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id, mainScript); + 'printLocal', isolate.id!, mainScript); final futures = [ - service.addBreakpointWithScriptUri(isolate.id, mainScript.uri, line), - service.addBreakpointWithScriptUri(isolate.id, mainScript.uri, line), + service.addBreakpointWithScriptUri( + isolate.id!, mainScript.uri!, line), + service.addBreakpointWithScriptUri( + isolate.id!, mainScript.uri!, line), ]; final breakpoints = await Future.wait(futures); @@ -129,34 +129,34 @@ void main() { await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); - var currentIsolate = await service.getIsolate(isolate.id); + var currentIsolate = await service.getIsolate(isolate.id!); expect(currentIsolate.breakpoints, containsAll([breakpoints[0]])); // Remove breakpoints so they don't impact other tests. - await service.removeBreakpoint(isolate.id, breakpoints[0].id); + await service.removeBreakpoint(isolate.id!, breakpoints[0].id!); - currentIsolate = await service.getIsolate(isolate.id); + currentIsolate = await service.getIsolate(isolate.id!); expect(currentIsolate.breakpoints, isEmpty); }); test('remove non-existing breakpoint fails', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id, mainScript); + 'printLocal', isolate.id!, mainScript); final bp = await service.addBreakpointWithScriptUri( - isolate.id, mainScript.uri, line); + isolate.id!, mainScript.uri!, line); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); - var currentIsolate = await service.getIsolate(isolate.id); + var currentIsolate = await service.getIsolate(isolate.id!); expect(currentIsolate.breakpoints, containsAll([bp])); // Remove breakpoints so they don't impact other tests. - await service.removeBreakpoint(isolate.id, bp.id); + await service.removeBreakpoint(isolate.id!, bp.id!); await expectLater( - service.removeBreakpoint(isolate.id, bp.id), throwsRPCError); + service.removeBreakpoint(isolate.id!, bp.id!), throwsRPCError); - currentIsolate = await service.getIsolate(isolate.id); + currentIsolate = await service.getIsolate(isolate.id!); expect(currentIsolate.breakpoints, isEmpty); }); }); diff --git a/dwds/test/build_daemon_callstack_test.dart b/dwds/test/build_daemon_callstack_test.dart index 63eee63f6..f03c059b3 100644 --- a/dwds/test/build_daemon_callstack_test.dart +++ b/dwds/test/build_daemon_callstack_test.dart @@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -// @dart = 2.9 - @TestOn('vm') import 'dart:async'; @@ -67,20 +65,20 @@ void main() { }); group('callStack |', () { - ChromeProxyService service; + late ChromeProxyService service; VM vm; - Isolate isolate; + late Isolate isolate; ScriptList scripts; - ScriptRef mainScript; - ScriptRef testLibraryScript; - Stream stream; + late ScriptRef mainScript; + late ScriptRef testLibraryScript; + late Stream stream; setUp(() async { setCurrentLogWriter(debug: debug); service = setup.service; vm = await service.getVM(); - isolate = await service.getIsolate(vm.isolates.first.id); - scripts = await service.getScripts(isolate.id); + isolate = await service.getIsolate(vm.isolates!.first.id!); + scripts = await service.getScripts(isolate.id!); await service.streamListen('Debug'); stream = service.onEvent('Debug'); @@ -88,26 +86,26 @@ void main() { final testPackage = soundNullSafety ? '_test_package_sound' : '_test_package'; - mainScript = scripts.scripts - .firstWhere((each) => each.uri.contains('main.dart')); - testLibraryScript = scripts.scripts.firstWhere((each) => - each.uri.contains('package:$testPackage/test_library.dart')); + mainScript = scripts.scripts! + .firstWhere((each) => each.uri!.contains('main.dart')); + testLibraryScript = scripts.scripts!.firstWhere((each) => + each.uri!.contains('package:$testPackage/test_library.dart')); }); tearDown(() async { - await service.resume(isolate.id); + await service.resume(isolate.id!); }); Future onBreakPoint(BreakpointTestData breakpoint, Future Function() body) async { - Breakpoint bp; + Breakpoint? bp; try { final bpId = breakpoint.bpId; final script = breakpoint.script; final line = - await context.findBreakpointLine(bpId, isolate.id, script); + await context.findBreakpointLine(bpId, isolate.id!, script); bp = await setup.service - .addBreakpointWithScriptUri(isolate.id, script.uri, line); + .addBreakpointWithScriptUri(isolate.id!, script.uri!, line); expect(bp, isNotNull); expect(bp.location, _matchBpLocation(script, line, 0)); @@ -119,7 +117,7 @@ void main() { } finally { // Remove breakpoint so it doesn't impact other tests or retries. if (bp != null) { - await setup.service.removeBreakpoint(isolate.id, bp.id); + await setup.service.removeBreakpoint(isolate.id!, bp.id!); } } } @@ -128,13 +126,13 @@ void main() { {int frameIndex = 1}) async { // Find lines the breakpoints are located on. final lines = await Future.wait(breakpoints.map((frame) => context - .findBreakpointLine(frame.bpId, isolate.id, frame.script))); + .findBreakpointLine(frame.bpId, isolate.id!, frame.script))); // Get current stack. - final stack = await service.getStack(isolate.id); + final stack = await service.getStack(isolate.id!); // Verify the stack is correct. - expect(stack.frames.length, greaterThanOrEqualTo(lines.length)); + expect(stack.frames!.length, greaterThanOrEqualTo(lines.length)); final expected = [ for (var i = 0; i < lines.length; i++) _matchFrame( @@ -144,7 +142,7 @@ void main() { // Verify that expression evaluation is not failing. final instance = - await service.evaluateInFrame(isolate.id, frameIndex, 'true'); + await service.evaluateInFrame(isolate.id!, frameIndex, 'true'); expect(instance, isA()); } @@ -237,7 +235,7 @@ void main() { ), ]; await onBreakPoint(breakpoints[0], () async { - await service.resume(isolate.id, step: 'Out'); + await service.resume(isolate.id!, step: 'Out'); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseInterrupted); return testCallStack([breakpoints[1], breakpoints[2]]); @@ -264,7 +262,7 @@ void main() { ), ]; await onBreakPoint(breakpoints[1], () async { - await service.resume(isolate.id, step: 'Into'); + await service.resume(isolate.id!, step: 'Into'); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseInterrupted); return testCallStack(breakpoints); @@ -296,7 +294,7 @@ void main() { final bp = BreakpointTestData( 'printMultiLine', 'printObjectMultiLine', mainScript); await onBreakPoint(bp, () async { - await service.resume(isolate.id, step: 'Into'); + await service.resume(isolate.id!, step: 'Into'); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseInterrupted); return testCallStack(breakpoints); @@ -309,7 +307,7 @@ void main() { } Matcher _matchFrame(ScriptRef script, String function, int line) => isA() - .having((frame) => frame.code.name, 'function', function) + .having((frame) => frame.code!.name, 'function', function) .having((frame) => frame.location, 'location', _matchFrameLocation(script, line)); From 86485d993aa8482156784c2a4a6cb4783aa9975b Mon Sep 17 00:00:00 2001 From: Elliott Brooks <21270878+elliette@users.noreply.github.com> Date: Mon, 8 Aug 2022 16:05:19 -0700 Subject: [PATCH 2/2] Respond to PR comments --- dwds/test/build_daemon_breakpoint_test.dart | 58 +++++++++++---------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/dwds/test/build_daemon_breakpoint_test.dart b/dwds/test/build_daemon_breakpoint_test.dart index fcb618ab7..8115a33bb 100644 --- a/dwds/test/build_daemon_breakpoint_test.dart +++ b/dwds/test/build_daemon_breakpoint_test.dart @@ -37,31 +37,35 @@ void main() { group('breakpoint', () { VM vm; late Isolate isolate; + late String isolateId; ScriptList scripts; late ScriptRef mainScript; + late String mainScriptUri; late Stream stream; setUp(() async { vm = await service.getVM(); isolate = await service.getIsolate(vm.isolates!.first.id!); - scripts = await service.getScripts(isolate.id!); + isolateId = isolate.id!; + scripts = await service.getScripts(isolateId); await service.streamListen('Debug'); stream = service.onEvent('Debug'); mainScript = scripts.scripts! .firstWhere((each) => each.uri!.contains('main.dart')); + mainScriptUri = mainScript.uri!; }); tearDown(() async { - await service.resume(isolate.id!); + await service.resume(isolateId); }); test('set breakpoint', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id!, mainScript); + 'printLocal', isolateId, mainScript); final bp = await service.addBreakpointWithScriptUri( - isolate.id!, mainScript.uri!, line); + isolateId, mainScriptUri, line); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); @@ -69,14 +73,14 @@ void main() { expect(bp, isNotNull); // Remove breakpoint so it doesn't impact other tests. - await service.removeBreakpoint(isolate.id!, bp.id!); + await service.removeBreakpoint(isolateId, bp.id!); }); test('set breakpoint again', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id!, mainScript); + 'printLocal', isolateId, mainScript); final bp = await service.addBreakpointWithScriptUri( - isolate.id!, mainScript.uri!, line); + isolateId, mainScriptUri, line); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); @@ -84,16 +88,16 @@ void main() { expect(bp, isNotNull); // Remove breakpoint so it doesn't impact other tests. - await service.removeBreakpoint(isolate.id!, bp.id!); + await service.removeBreakpoint(isolateId, bp.id!); }); test('set existing breakpoint succeeds', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id!, mainScript); + 'printLocal', isolateId, mainScript); final bp1 = await service.addBreakpointWithScriptUri( - isolate.id!, mainScript.uri!, line); + isolateId, mainScriptUri, line); final bp2 = await service.addBreakpointWithScriptUri( - isolate.id!, mainScript.uri!, line); + isolateId, mainScriptUri, line); expect(bp1, equals(bp2)); expect(bp1, isNotNull); @@ -101,25 +105,23 @@ void main() { await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); - var currentIsolate = await service.getIsolate(isolate.id!); + var currentIsolate = await service.getIsolate(isolateId); expect(currentIsolate.breakpoints, containsAll([bp1])); // Remove breakpoints so they don't impact other tests. - await service.removeBreakpoint(isolate.id!, bp1.id!); + await service.removeBreakpoint(isolateId, bp1.id!); - currentIsolate = await service.getIsolate(isolate.id!); + currentIsolate = await service.getIsolate(isolateId); expect(currentIsolate.breakpoints, isEmpty); }); test('set breakpoints at the same line simultaneously succeeds', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id!, mainScript); + 'printLocal', isolateId, mainScript); final futures = [ - service.addBreakpointWithScriptUri( - isolate.id!, mainScript.uri!, line), - service.addBreakpointWithScriptUri( - isolate.id!, mainScript.uri!, line), + service.addBreakpointWithScriptUri(isolateId, mainScriptUri, line), + service.addBreakpointWithScriptUri(isolateId, mainScriptUri, line), ]; final breakpoints = await Future.wait(futures); @@ -129,34 +131,34 @@ void main() { await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); - var currentIsolate = await service.getIsolate(isolate.id!); + var currentIsolate = await service.getIsolate(isolateId); expect(currentIsolate.breakpoints, containsAll([breakpoints[0]])); // Remove breakpoints so they don't impact other tests. - await service.removeBreakpoint(isolate.id!, breakpoints[0].id!); + await service.removeBreakpoint(isolateId, breakpoints[0].id!); - currentIsolate = await service.getIsolate(isolate.id!); + currentIsolate = await service.getIsolate(isolateId); expect(currentIsolate.breakpoints, isEmpty); }); test('remove non-existing breakpoint fails', () async { final line = await context.findBreakpointLine( - 'printLocal', isolate.id!, mainScript); + 'printLocal', isolateId, mainScript); final bp = await service.addBreakpointWithScriptUri( - isolate.id!, mainScript.uri!, line); + isolateId, mainScriptUri, line); await stream.firstWhere( (Event event) => event.kind == EventKind.kPauseBreakpoint); - var currentIsolate = await service.getIsolate(isolate.id!); + var currentIsolate = await service.getIsolate(isolateId); expect(currentIsolate.breakpoints, containsAll([bp])); // Remove breakpoints so they don't impact other tests. - await service.removeBreakpoint(isolate.id!, bp.id!); + await service.removeBreakpoint(isolateId, bp.id!); await expectLater( - service.removeBreakpoint(isolate.id!, bp.id!), throwsRPCError); + service.removeBreakpoint(isolateId, bp.id!), throwsRPCError); - currentIsolate = await service.getIsolate(isolate.id!); + currentIsolate = await service.getIsolate(isolateId); expect(currentIsolate.breakpoints, isEmpty); }); });