@@ -8,81 +8,6 @@ import 'package:devtools_app_shared/src/service/isolate_manager.dart';
88import 'package:flutter_test/flutter_test.dart' ;
99import 'package:vm_service/vm_service.dart' ;
1010
11- /// Minimal fake VmService for IsolateManager tests.
12- class _FakeVmService extends Fake implements VmService {
13- _FakeVmService (this .isolates);
14-
15- /// Map of isolate id -> Isolate to return from getIsolate().
16- final Map <String , Isolate > isolates;
17-
18- final _isolateEventController = StreamController <Event >.broadcast ();
19-
20- @override
21- Stream <Event > get onIsolateEvent => _isolateEventController.stream;
22-
23- @override
24- Stream <Event > get onDebugEvent => const Stream .empty ();
25-
26- @override
27- Future <Isolate > getIsolate (String isolateId) async {
28- return isolates[isolateId] ??
29- Isolate .parse ({
30- 'id' : isolateId,
31- 'runnable' : true ,
32- 'extensionRPCs' : < String > [],
33- })! ;
34- }
35-
36- @override
37- Future <Success > resume (String isolateId, {String ? step, int ? frameIndex}) =>
38- Future .value (Success ());
39-
40- Future <void > emitIsolateStart (IsolateRef isolateRef) async {
41- _isolateEventController.add (
42- Event .parse ({
43- 'type' : 'Event' ,
44- 'kind' : EventKind .kIsolateStart,
45- 'isolate' : {
46- 'type' : '@Isolate' ,
47- 'id' : isolateRef.id,
48- 'name' : isolateRef.name,
49- 'isSystemIsolate' : isolateRef.isSystemIsolate,
50- },
51- })! ,
52- );
53- await Future <void >.delayed (Duration .zero);
54- }
55-
56- @override
57- Future <void > dispose () async {
58- await _isolateEventController.close ();
59- }
60- }
61-
62- /// Creates a minimal runnable [Isolate] for a given [IsolateRef] .
63- Isolate _makeIsolate (IsolateRef ref, {String ? rootLibraryUri}) {
64- final json = < String , Object ? > {
65- 'id' : ref.id,
66- 'name' : ref.name,
67- 'type' : '@Isolate' ,
68- 'runnable' : true ,
69- 'extensionRPCs' : < String > [],
70- if (rootLibraryUri != null )
71- 'rootLib' : {
72- 'type' : '@Library' ,
73- 'id' : 'libraries/0' ,
74- 'uri' : rootLibraryUri,
75- },
76- };
77-
78- return Isolate .parse (json)! ;
79- }
80-
81- /// Creates an [IsolateRef] with the given name and id.
82- IsolateRef _makeRef (String name, String id) {
83- return IsolateRef .parse ({'name' : name, 'id' : id, 'isSystemIsolate' : false })! ;
84- }
85-
8611void main () {
8712 group ('IsolateManager._computeMainIsolate' , () {
8813 late IsolateManager manager;
@@ -115,9 +40,9 @@ void main() {
11540 final vmServiceRef = _makeRef ('vm-service' , 'isolates/3' );
11641
11742 final fakeService = _FakeVmService ({
118- 'isolates/1' : _makeIsolate (testRunnerRef),
119- 'isolates/2' : _makeIsolate (testSuiteRef),
120- 'isolates/3' : _makeIsolate (vmServiceRef),
43+ testRunnerRef.id ! : _makeIsolate (testRunnerRef),
44+ testSuiteRef.id ! : _makeIsolate (testSuiteRef),
45+ vmServiceRef.id ! : _makeIsolate (vmServiceRef),
12146 });
12247 fakeServices.add (fakeService);
12348
@@ -143,8 +68,8 @@ void main() {
14368 final vmServiceRef = _makeRef ('vm-service' , 'isolates/2' );
14469
14570 final fakeService = _FakeVmService ({
146- 'isolates/1' : _makeIsolate (mainRef),
147- 'isolates/2' : _makeIsolate (vmServiceRef),
71+ mainRef.id ! : _makeIsolate (mainRef),
72+ vmServiceRef.id ! : _makeIsolate (vmServiceRef),
14873 });
14974 fakeServices.add (fakeService);
15075
@@ -162,7 +87,7 @@ void main() {
16287 final scriptRef = _makeRef ('foo.dart:main()' , 'isolates/1' );
16388
16489 final fakeService = _FakeVmService ({
165- 'isolates/1' : _makeIsolate (scriptRef),
90+ scriptRef.id ! : _makeIsolate (scriptRef),
16691 });
16792 fakeServices.add (fakeService);
16893
@@ -183,15 +108,15 @@ void main() {
183108 final vmServiceRef = _makeRef ('vm-service' , 'isolates/3' );
184109
185110 final fakeService = _FakeVmService ({
186- 'isolates/1' : _makeIsolate (
111+ testRunnerRef.id ! : _makeIsolate (
187112 testRunnerRef,
188113 rootLibraryUri: 'file:///tmp/dart_test.kernel.abcd/test.dart' ,
189114 ),
190- 'isolates/2' : _makeIsolate (
115+ userTestRef.id ! : _makeIsolate (
191116 userTestRef,
192117 rootLibraryUri: 'package:my_app/foo_test.dart' ,
193118 ),
194- 'isolates/3' : _makeIsolate (
119+ vmServiceRef.id ! : _makeIsolate (
195120 vmServiceRef,
196121 rootLibraryUri: 'dart:developer' ,
197122 ),
@@ -223,8 +148,8 @@ void main() {
223148 );
224149
225150 final fakeService = _FakeVmService ({
226- 'isolates/1' : _makeIsolate (testRunnerRef),
227- 'isolates/2' : _makeIsolate (testSuiteRef),
151+ testRunnerRef.id ! : _makeIsolate (testRunnerRef),
152+ testSuiteRef.id ! : _makeIsolate (testSuiteRef),
228153 });
229154 fakeServices.add (fakeService);
230155
@@ -250,3 +175,78 @@ void main() {
250175 );
251176 });
252177}
178+
179+ /// Minimal fake VmService for IsolateManager tests.
180+ class _FakeVmService extends Fake implements VmService {
181+ _FakeVmService (this .isolates);
182+
183+ /// Map of isolate id -> Isolate to return from getIsolate().
184+ final Map <String , Isolate > isolates;
185+
186+ final _isolateEventController = StreamController <Event >.broadcast ();
187+
188+ @override
189+ Stream <Event > get onIsolateEvent => _isolateEventController.stream;
190+
191+ @override
192+ Stream <Event > get onDebugEvent => const Stream .empty ();
193+
194+ @override
195+ Future <Isolate > getIsolate (String isolateId) async {
196+ return isolates[isolateId] ??
197+ Isolate .parse ({
198+ 'id' : isolateId,
199+ 'runnable' : true ,
200+ 'extensionRPCs' : < String > [],
201+ })! ;
202+ }
203+
204+ @override
205+ Future <Success > resume (String isolateId, {String ? step, int ? frameIndex}) =>
206+ Future .value (Success ());
207+
208+ Future <void > emitIsolateStart (IsolateRef isolateRef) async {
209+ _isolateEventController.add (
210+ Event .parse ({
211+ 'type' : 'Event' ,
212+ 'kind' : EventKind .kIsolateStart,
213+ 'isolate' : {
214+ 'type' : '@Isolate' ,
215+ 'id' : isolateRef.id,
216+ 'name' : isolateRef.name,
217+ 'isSystemIsolate' : isolateRef.isSystemIsolate,
218+ },
219+ })! ,
220+ );
221+ await Future <void >.delayed (Duration .zero);
222+ }
223+
224+ @override
225+ Future <void > dispose () async {
226+ await _isolateEventController.close ();
227+ }
228+ }
229+
230+ /// Creates a minimal runnable [Isolate] for a given [IsolateRef] .
231+ Isolate _makeIsolate (IsolateRef ref, {String ? rootLibraryUri}) {
232+ final json = < String , Object ? > {
233+ 'id' : ref.id,
234+ 'name' : ref.name,
235+ 'type' : '@Isolate' ,
236+ 'runnable' : true ,
237+ 'extensionRPCs' : < String > [],
238+ if (rootLibraryUri != null )
239+ 'rootLib' : {
240+ 'type' : '@Library' ,
241+ 'id' : 'libraries/0' ,
242+ 'uri' : rootLibraryUri,
243+ },
244+ };
245+
246+ return Isolate .parse (json)! ;
247+ }
248+
249+ /// Creates an [IsolateRef] with the given name and id.
250+ IsolateRef _makeRef (String name, String id) {
251+ return IsolateRef .parse ({'name' : name, 'id' : id, 'isSystemIsolate' : false })! ;
252+ }
0 commit comments