Skip to content

Commit 723bc76

Browse files
[flutter_tools] update coverage collector to use vmservice api (flutter#54682)
1 parent 14cceef commit 723bc76

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

packages/flutter_tools/lib/src/test/coverage_collector.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'dart:async';
66

77
import 'package:coverage/coverage.dart' as coverage;
8+
import 'package:vm_service/vm_service.dart' as vm_service;
89

910
import '../base/file_system.dart';
1011
import '../base/io.dart';
@@ -201,20 +202,20 @@ Future<Map<String, dynamic>> _getAllCoverage(VMService service, bool Function(St
201202
final List<Map<String, dynamic>> coverage = <Map<String, dynamic>>[];
202203
for (final Isolate isolateRef in service.vm.isolates) {
203204
await isolateRef.load();
204-
final Map<String, dynamic> scriptList = await isolateRef.invokeRpcRaw('getScripts', params: <String, dynamic>{'isolateId': isolateRef.id});
205+
Map<String, Object> scriptList;
206+
try {
207+
final vm_service.ScriptList actualScriptList = await service.getScripts(isolateRef.id);
208+
scriptList = actualScriptList.json;
209+
} on vm_service.SentinelException {
210+
continue;
211+
}
205212
final List<Future<void>> futures = <Future<void>>[];
206213

207214
final Map<String, Map<String, dynamic>> scripts = <String, Map<String, dynamic>>{};
208215
final Map<String, Map<String, dynamic>> sourceReports = <String, Map<String, dynamic>>{};
209216
// For each ScriptRef loaded into the VM, load the corresponding Script and
210217
// SourceReport object.
211218

212-
// We may receive such objects as
213-
// {type: Sentinel, kind: Collected, valueAsString: <collected>}
214-
// that need to be skipped.
215-
if (scriptList['scripts'] == null) {
216-
continue;
217-
}
218219
for (final Map<String, dynamic> script in (scriptList['scripts'] as List<dynamic>).cast<Map<String, dynamic>>()) {
219220
if (!libraryPredicate(script['uri'] as String)) {
220221
continue;

packages/flutter_tools/lib/src/vmservice.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,11 @@ class VMService implements vm_service.VmService {
492492
_getEventController(streamId).add(event);
493493
}
494494

495+
@override
496+
Future<vm_service.ScriptList> getScripts(String isolateId) {
497+
return _delegateService.getScripts(isolateId);
498+
}
499+
495500
/// Reloads the VM.
496501
Future<void> getVMOld() async => await vm.reload();
497502

packages/flutter_tools/test/general.shard/coverage_collector_test.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:flutter_tools/src/base/io.dart';
88
import 'package:flutter_tools/src/test/coverage_collector.dart';
99
import 'package:flutter_tools/src/vmservice.dart';
1010
import 'package:mockito/mockito.dart';
11+
import 'package:vm_service/vm_service.dart' as vm_service;
1112

1213
import '../src/common.dart';
1314

@@ -19,10 +20,8 @@ void main() {
1920
});
2021

2122
test('Coverage collector Can handle coverage sentinenl data', () async {
22-
when(mockVMService.vm.isolates.first.invokeRpcRaw('getScripts', params: anyNamed('params')))
23-
.thenAnswer((Invocation invocation) async {
24-
return <String, Object>{'type': 'Sentinel', 'kind': 'Collected', 'valueAsString': '<collected>'};
25-
});
23+
when(mockVMService.getScripts(any))
24+
.thenThrow(vm_service.SentinelException.parse('getScripts', <String, Object>{}));
2625
final Map<String, Object> result = await collect(null, (String predicate) => true, connector: (Uri uri) async {
2726
return mockVMService;
2827
});

0 commit comments

Comments
 (0)