@@ -32,44 +32,56 @@ void main() {
3232 final RootIsolateToken rootIsolateToken = RootIsolateToken .instance! ;
3333 const int numIsolates = 3 ;
3434 final List <ReceivePort > receivePorts = [];
35+ final List <Isolate > isolates = [];
3536
36- for (int i = 0 ; i < numIsolates; i++ ) {
37- final ReceivePort receivePort = ReceivePort ();
38- receivePorts.add (receivePort);
37+ try {
38+ for (int i = 0 ; i < numIsolates; i++ ) {
39+ final ReceivePort receivePort = ReceivePort ();
40+ receivePorts.add (receivePort);
3941
40- await Isolate .spawn (
41- _isolateVersionCheckMain,
42- _IsolateData (
43- rootIsolateToken: rootIsolateToken,
44- sendPort: receivePort.sendPort,
45- ),
46- );
47- }
42+ final Isolate isolate = await Isolate .spawn (
43+ _isolateVersionCheckMain,
44+ _IsolateData (
45+ rootIsolateToken: rootIsolateToken,
46+ sendPort: receivePort.sendPort,
47+ ),
48+ );
49+ isolates.add (isolate);
50+ }
4851
49- final List <_IsolateResult > results = [];
50- for (final receivePort in receivePorts) {
51- final dynamic result = await receivePort.first;
52- expect (result, isA <_IsolateResult >());
53- results.add (result as _IsolateResult );
54- }
52+ final List <_IsolateResult > results = [];
53+ for (final receivePort in receivePorts) {
54+ final dynamic result = await receivePort.first;
55+ expect (result, isA <_IsolateResult >());
56+ results.add (result as _IsolateResult );
57+ }
5558
56- for (int i = 0 ; i < results.length; i++ ) {
57- expect (
58- results[i].error,
59- isNull,
60- reason: 'Isolate $i should not throw an error' ,
61- );
62- expect (results[i].version, isNotNull);
63- expect (results[i].version! .length, greaterThan (0 ));
64- }
59+ for (int i = 0 ; i < results.length; i++ ) {
60+ expect (
61+ results[i].error,
62+ isNull,
63+ reason: 'Isolate $i should not throw an error' ,
64+ );
65+ expect (results[i].version, isNotNull);
66+ expect (results[i].version! .length, greaterThan (0 ));
67+ }
6568
66- final String firstVersion = results[0 ].version! ;
67- for (int i = 1 ; i < results.length; i++ ) {
68- expect (
69- results[i].version,
70- equals (firstVersion),
71- reason: 'All isolates should return the same SDK version' ,
72- );
69+ final String firstVersion = results[0 ].version! ;
70+ for (int i = 1 ; i < results.length; i++ ) {
71+ expect (
72+ results[i].version,
73+ equals (firstVersion),
74+ reason: 'All isolates should return the same SDK version' ,
75+ );
76+ }
77+ } finally {
78+ // Clean up resources
79+ for (final receivePort in receivePorts) {
80+ receivePort.close ();
81+ }
82+ for (final isolate in isolates) {
83+ isolate.kill (priority: Isolate .immediate);
84+ }
7385 }
7486 },
7587 );
0 commit comments