|
1 | 1 | // Flags: --expose_gc |
2 | 2 | // |
3 | 3 | import'../common/index.mjs'; |
| 4 | +import{gcUntil}from'../common/gc.js'; |
4 | 5 | import{describe,it}from'node:test'; |
5 | 6 |
|
6 | 7 | functionmakeSubsequentCalls(limit,done,holdReferences=false){ |
@@ -141,37 +142,29 @@ it('drops settled dependant signals when signal is composite', (t, done) =>{ |
141 | 142 | ); |
142 | 143 |
|
143 | 144 | setImmediate(()=>{ |
144 | | -global.gc(); |
| 145 | +global.gc({execution: 'async'}).then(()=>{ |
| 146 | +t.assert.strictEqual(composedSignalRef.deref(),undefined); |
| 147 | +t.assert.strictEqual(controllers[0].signal[kDependantSignals].size,2); |
| 148 | +t.assert.strictEqual(controllers[1].signal[kDependantSignals].size,1); |
145 | 149 |
|
146 | | -t.assert.strictEqual(composedSignalRef.deref(),undefined); |
147 | | -t.assert.strictEqual(controllers[0].signal[kDependantSignals].size,2); |
148 | | -t.assert.strictEqual(controllers[1].signal[kDependantSignals].size,1); |
149 | | - |
150 | | -setImmediate(()=>{ |
151 | | -t.assert.strictEqual(controllers[0].signal[kDependantSignals].size,0); |
152 | | -t.assert.strictEqual(controllers[1].signal[kDependantSignals].size,0); |
| 150 | +setImmediate(()=>{ |
| 151 | +t.assert.strictEqual(controllers[0].signal[kDependantSignals].size,0); |
| 152 | +t.assert.strictEqual(controllers[1].signal[kDependantSignals].size,0); |
153 | 153 |
|
154 | | -done(); |
| 154 | +done(); |
| 155 | +}); |
155 | 156 | }); |
156 | 157 | }); |
157 | 158 | }); |
158 | 159 |
|
159 | 160 | it('drops settled signals even when there are listeners',(t,done)=>{ |
160 | | -runWithOrphanListeners(limit,(signalRefs)=>{ |
161 | | -setImmediate(()=>{ |
162 | | -global.gc(); |
163 | | -setImmediate(()=>{ |
164 | | -global.gc();// One more call needed to clean up the deeper composed signals |
165 | | -setImmediate(()=>{ |
166 | | -global.gc();// One more call needed to clean up the deeper composed signals |
167 | | - |
168 | | -constunGCedSignals=[...signalRefs].filter((ref)=>ref.deref()); |
169 | | - |
170 | | -t.assert.strictEqual(unGCedSignals.length,0); |
| 161 | +runWithOrphanListeners(limit,async(signalRefs)=>{ |
| 162 | +awaitgcUntil('all signals are GCed',()=>{ |
| 163 | +constunGCedSignals=[...signalRefs].filter((ref)=>ref.deref()); |
171 | 164 |
|
172 | | -done(); |
173 | | -}); |
174 | | -}); |
| 165 | +returnunGCedSignals.length===0; |
175 | 166 | }); |
| 167 | + |
| 168 | +done(); |
176 | 169 | }); |
177 | 170 | }); |
0 commit comments