From 723bc768472bbb242bad382da9b347f7cc048213 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Mon, 13 Apr 2020 16:10:02 -0700 Subject: [PATCH] [flutter_tools] update coverage collector to use vmservice api (#54682) --- .../lib/src/test/coverage_collector.dart | 15 ++++++++------- packages/flutter_tools/lib/src/vmservice.dart | 5 +++++ .../general.shard/coverage_collector_test.dart | 7 +++---- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/flutter_tools/lib/src/test/coverage_collector.dart b/packages/flutter_tools/lib/src/test/coverage_collector.dart index 9523d645e39..44e2e14a211 100644 --- a/packages/flutter_tools/lib/src/test/coverage_collector.dart +++ b/packages/flutter_tools/lib/src/test/coverage_collector.dart @@ -5,6 +5,7 @@ import 'dart:async'; import 'package:coverage/coverage.dart' as coverage; +import 'package:vm_service/vm_service.dart' as vm_service; import '../base/file_system.dart'; import '../base/io.dart'; @@ -201,7 +202,13 @@ Future> _getAllCoverage(VMService service, bool Function(St final List> coverage = >[]; for (final Isolate isolateRef in service.vm.isolates) { await isolateRef.load(); - final Map scriptList = await isolateRef.invokeRpcRaw('getScripts', params: {'isolateId': isolateRef.id}); + Map scriptList; + try { + final vm_service.ScriptList actualScriptList = await service.getScripts(isolateRef.id); + scriptList = actualScriptList.json; + } on vm_service.SentinelException { + continue; + } final List> futures = >[]; final Map> scripts = >{}; @@ -209,12 +216,6 @@ Future> _getAllCoverage(VMService service, bool Function(St // For each ScriptRef loaded into the VM, load the corresponding Script and // SourceReport object. - // We may receive such objects as - // {type: Sentinel, kind: Collected, valueAsString: } - // that need to be skipped. - if (scriptList['scripts'] == null) { - continue; - } for (final Map script in (scriptList['scripts'] as List).cast>()) { if (!libraryPredicate(script['uri'] as String)) { continue; diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index d5671cb7e53..e38b6fe689e 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -492,6 +492,11 @@ class VMService implements vm_service.VmService { _getEventController(streamId).add(event); } + @override + Future getScripts(String isolateId) { + return _delegateService.getScripts(isolateId); + } + /// Reloads the VM. Future getVMOld() async => await vm.reload(); diff --git a/packages/flutter_tools/test/general.shard/coverage_collector_test.dart b/packages/flutter_tools/test/general.shard/coverage_collector_test.dart index 12f0260f480..9861dd6a948 100644 --- a/packages/flutter_tools/test/general.shard/coverage_collector_test.dart +++ b/packages/flutter_tools/test/general.shard/coverage_collector_test.dart @@ -8,6 +8,7 @@ import 'package:flutter_tools/src/base/io.dart'; import 'package:flutter_tools/src/test/coverage_collector.dart'; import 'package:flutter_tools/src/vmservice.dart'; import 'package:mockito/mockito.dart'; +import 'package:vm_service/vm_service.dart' as vm_service; import '../src/common.dart'; @@ -19,10 +20,8 @@ void main() { }); test('Coverage collector Can handle coverage sentinenl data', () async { - when(mockVMService.vm.isolates.first.invokeRpcRaw('getScripts', params: anyNamed('params'))) - .thenAnswer((Invocation invocation) async { - return {'type': 'Sentinel', 'kind': 'Collected', 'valueAsString': ''}; - }); + when(mockVMService.getScripts(any)) + .thenThrow(vm_service.SentinelException.parse('getScripts', {})); final Map result = await collect(null, (String predicate) => true, connector: (Uri uri) async { return mockVMService; });